mysql主从同步数据搭建(一主一从)

一、【主库】配置
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 
#######################################

2、创建及授权用户
创建slave用户用于从库同步复制,授予复制、同步访问的权限

mysql> CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.01 sec)

mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
Query OK, 0 rows affected (0.00 sec)

3、查看信息
3、1用户信息

SELECT * FROM mysql.user;

在这里插入图片描述
3、2 log_bin状态
在这里插入图片描述
3、3查看master状态
在这里插入图片描述
二、【从库】配置
1、从库配置
在这里插入图片描述
2、从库中配置主库信息

在这里插入图片描述

mysql>stop slave 
mysql>CHANGE MASTER TO MASTER_HOST='localhost',MASTER_PORT=3306,MASTER_USER='slave',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000100',MASTER_LOG_POS=617;

3、查看同步状态
在这里插入图片描述
slave_io_status状态为空,忘记开启start slave ;开启后查看状态正常。

mysql>start slave

在这里插入图片描述
4、注意事项
在这里插入图片描述
4.1 I/O的作用是从master 3306端口上把它的binlog取过来(master修改的内容会写到自己的binlog等待slave更新),然后写到本地的relay-log,而SQL thread则是去读本地的relay-log,再把它转换成本Mysql所能理解的语句,于是同步就这样一步一步的完成,遇到数据同步失败原因之一排查思路就看这两个值是否为Yes。
start slave 之后,SLAVE_IO_RUNNING值为Yes,SLAVE_SQL_RUNNING为Yes。
4.2主库新建数据库test后新建t_user表,查看从库,未发现有新库及新表创建。查看show slave status;SLAVE_SQL_RUNNING为NO。原因:主从不同步数据库,所以同步之前保证从库手动创建test库,若在SLAVE_SQL_RUNNING为NO的状态下,在从库新建同步库test之后,在主库t_user中新增数据后,从库未同步数据。所以在做同步之前先将SLAVE_SQL_RUNNING改为Yes,可执行以下三个命令,可重复执行,在重复执行两次之后值才改为Yes,从库手动创建表t_user,主库在t_user新增数据后,从库t_user表中同步数据成功。

mysql>stop slave;
mysql>set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql>start slave;

在这里插入图片描述
5、同步测试
主库新建test库,从库会自动同步。
在这里插入图片描述
新建表、增删改查数据即可测试,若测试中数据未同步,使用命令show slave status;查看SLAVE_SQL_RUNNING是否为NO,并可查看为NO原因:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/FORLOVEHUAN/article/details/128879556