专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 mysql主从复制搭建步骤

mysql主从复制搭建步骤

更新时间:2020-08-07 11:39:36 来源:动力节点 浏览1358次


相信有些初学java的小伙伴对mysql主从复制搭建步骤还不是很了解,下面就由动力节点java培训学校的小编就来告诉大家该如何做。


mysql主从复制搭建


环境:


linux64位,一台机器两个实例,主库3306端口,从库3307端口


步骤:


一、下载安装


先下载安装mysql,这里使用了5.7.21版本,具体过程不做详细说明,可自行查资料如何下载


二、配置


1.master配置,/etc/my.cnf文件入下


[mysqld]


port=3306


server-id=1


basedir=/home/shared_disk/mysql-5.7.21


datadir=/home/shared_disk/mysql-5.7.21/data


socket=/home/shared_disk/mysql-5.7.21/data/mysql.sock


symbolic-links=0


log-error=/home/shared_disk/mysql-5.7.21/data/error.log


pid-file=/home/shared_disk/mysql-5.7.21/data/mysql.pid


#skip-grant-tables


#开启gtid模式,global transaction identified


gtid-mode=on


#保证gtid强一致性


enforce-gtid-consistency=1


#slave记录binlog,否则slave执行完relay log后就删了,找不到slave的执行记录


log_slave_updates


#按行记录binlog


binlog_format=row


#binlog文件名


log-bin=/home/shared_disk/mysql_datadir/mysql-bin


#需要记录binlog的数据库,即需要同步的数据库,同步是通过binlog实现的


binlog-do-db=allen


#不需要记录binlog的数据库


binlog-ignore-db=mysql


binlog-ignore-db=information_schema


binlog-ignore-db=performance_schema


binlog-ignore-db=sys


其中红色部分是主从同步必须的配置


2.启动主库,安装到系统服务的直接service命令启动即可,没安装的运行mysqld --defaults-file=/etc/my.cnf --user=mysql &


3.登录主库,创建主从复制的账号


create user 'sync'@'localhost' identified by 'sync';


给账号授权


grant file,replication slave on *.* to 'sync'@'localhost' identified by 'sync';


4.slave配置


配置文件/etc/my-slave.cnf入下


[mysqld]


port=3307


server-id=2


basedir=/home/shared_disk/mysql-slave


datadir=/home/shared_disk/mysql-slave/data


socket=/home/shared_disk/mysql-slave/data/mysql.sock


symbolic-links=0


log-error=/home/shared_disk/mysql-slave/data/error.log


pid-file=/home/shared_disk/mysql-slave/data/mysql.pid


#skip-grant-tables


gtid-mode=on


enforce-gtid-consistency=1


log_slave_updates


binlog_format=row


log-bin=/home/shared_disk/mysql_datadir/mysql-bin


#从库启动时跳过自动启动slave这一步


skip_slave_start=1


replicate-ignore-db=mysql


replicate-ignore-db=information_schema


replicate-ignore-db=performance_schema


replicate-ignore-db=sys


5.启动从库,service命令或mysqld --defaults-file=/etc/my-slave.cnf --user=mysql &


启动后登录进去,执行


stop slave;


change master to master_host='locahost',master_port=3306,master_user='sync',master_password='sync',master_auto_position=1;


start slave;


show slave status\G;


看到以下两个YES即说明主从已经搭建成功


Slave_IO_Running: Yes


Slave_SQL_Running: Yes


PS:


当slave遇到问题时候,我们可以show slave status\G;看到同步情况


Retrieved_Gtid_Set: 9461bcc7-4850-11e8-a9f7-525400045eeb:1-7


Executed_Gtid_Set: 4f7a4829-9a29-11e8-aa21-525400045eeb:1-5,9461bcc7-4850-11e8-a9f7-525400045eeb:1-7。


其中9461bcc7-4850-11e8-a9f7-525400045eeb是主库的mysql实例唯一id,4f7a4829-9a29-11e8-aa21-525400045eeb是从库的mysql实例唯一id,


Retrieved_Gtid_Set和Executed_Gtid_Set分别为已接收的和已执行的gtid,已执行的gtid中有一个和Retrieved_Gtid一样的,表明是执行了从主库同步过来的事务,另一个则是本机自己执行的事务。


假设现在Executed_Gtid_Set如下:


Executed_Gtid_Set: 4f7a4829-9a29-11e8-aa21-525400045eeb:1-5,9461bcc7-4850-11e8-a9f7-525400045eeb:1-3


我们可以看到同步的gtid从4之后就没执行了,应该是遇到错误了导致slave停止了,我们可以用以下操作跳过第四个gtid,让slave继续工作


stop slave;


set gtid_next='9461bcc7-4850-11e8-a9f7-525400045eeb:4';


begin;


commit;


set gtid_next='automatic';


start slave;


show slave status\G;


原理就是让下一个事务指到第四个,然后begin接着commit,中间为空实现,让slave以为这个事务执行成功了。


三、验证


主库建表,插入数据,去从库看是否存在相同数据。


从库使用show slave status\G;命令查看Retrieved_Gtid_Set和Executed_Gtid_Set。


mysql主从复制搭建步骤


以上就是动力节点java培训学校的小编针对“mysql主从复制搭建步骤”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。


提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>