常用环境部署(十)——MySQL主从同步数据搭建(一主一从)

发布时间:2023年12月29日

一、主从服务器MySQL安装

1、注意事项

主从服务器数据库尽量安装同一版本,避免兼容性造成的一些错误产生

2、Centos安装MySQL

链接:centos7离线安装MySQL-CSDN博客

二、主库MySQL配置?

1、修改主库配置

(1)编辑数据库配置文件

vim /etc/my.cnf

注意:我的数据库配置文件为/etc/my.cnf,大家按照自己的去修改就行

(2)修改配置如下:

max_allowed_packet = 64M
transaction_isolation = READ-COMMITTED
tmp_table_size = 512M
# 设置字符集为utf8
character_set_server = utf8
# 不区分大小写
lower_case_table_names = 1
# 允许最大连接数
max_connections = 9600 

server-id=1
# Binary Logging.
# log-bin 二进制日志
log-bin=mysql-bin
#只保留7天的二进制日志,以防磁盘被日志占满
expire-logs-days=7
#不备份的数据库
binlog-ignore-db  = mysql       
binlog-ignore-db  = information_schema
binlog-ignore-db  = performation_schema
binlog-ignore-db  = sys
#需要做复制的数据库名,如果有多个,复制binlog-do-db即可
binlog-do-db      = test 

注意:?修改完配置之后重启数据库

systemctl restart mysqld

2、创建及授权用户

(1)创建slave用户

作用:用于从库同步复制,

CREATE USER 'slave'@'%' IDENTIFIED BY 'Cntcitc@2023';

?(2)授权

作用:授予复制、同步访问的权限

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

?

3、查看信息?

(1)查看用户信息

SELECT * FROM mysql.user;

(2)查看log_bin的状态?

show variables like 'log_bin';

(3)查看master状态

show master status;

注意:查询结果File对应的字段一定要记住,配置从库的时候需要使用

三、从库MySQL配置?

1、修改从库配置

(1)编辑数据库配置文件

vim /etc/my.cnf

注意:我的数据库配置文件为/etc/my.cnf,大家按照自己的去修改就行

(2)修改配置如下:

character_set_server = utf8
lower_case_table_names = 1
max_allowed_packet = 64M
transaction_isolation = READ-COMMITTED
tmp_table_size = 512M
# 允许最大连接数
max_connections = 9600 

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
server-id=2
log-bin=mysql-bin

binlog-format=ROW

注意:(1)server-id=2一定要配置

(2)修改完配置之后重启数据库

systemctl restart mysqld

2、从库中配置主库信息

(1)关闭slave

stop slave

(2)在从库中配置主库信息

CHANGE MASTER TO MASTER_HOST='172.16.40.5',MASTER_PORT=3306,MASTER_USER='slave',MASTER_PASSWORD='Cntcitc@2023',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=617;

注意:MASTER_LOG_FILE参数要配置成主库查询master状态中的File的值,其他参数配置成自己的就行,比如主库IP,端口,以及共享用户和密码。?

3、查看同步状态

(1)查看同步状态

show slave status;

注意:slave_io_status状态为空,忘记开启start slave ;开启后查看状态正常。

start slave

?4、注意事项

(1)SLAVE_SQL_RUNNING为NO

? ? ? ? I/O的作用是从master 3306端口上把它的binlog取过来(master修改的内容会写到自己的binlog等待slave更新),然后写到本地的relay-log,而SQL thread则是去读本地的relay-log,再把它转换成本Mysql所能理解的语句,于是同步就这样一步一步的完成,start slave 之后,SLAVE_IO_RUNNING值为Yes,SLAVE_SQL_RUNNING为Yes。?

show slave status;

主库新建数据库test后新建t_user表,查看从库,未发现有新库及新表创建。查看同步状态后发现SLAVE_SQL_RUNNING为NO。

(2)解决方法

可执行以下三个命令,可重复执行,在重复执行两次之后值才改为Yes,从库手动创建表t_user,主库在t_user新增数据后,从库t_user表中同步数据成功。

stop slave;

set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

start slave;

注意:我执行了一次之后就成功了,大家执行一次后查看一下状态

show slave status;

四、同步测试?

(1)主库新建test库,从库会自动同步。

(2)新建表、增删改查数据成功。?

(3)若测试未成功

查看同步状态,看SLAVE_SQL_RUNNING是否为NO

show slave status;

?还可以查看为NO原因:

文章来源:https://blog.csdn.net/wd520521/article/details/135287568
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。