MySQL主从模式可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。本文使用 半同步复制模式 。
mysql主从复制用途:
- 实时灾备,用于故障切换(高可用)
- 读写分离,提供查询服务(读扩展)
- 数据备份,避免影响业务(高可用)
主从部署必要条件:
- 从库服务器能连通主库
- 主库开启binlog日志(设置log-bin参数)
- 主从server-id不同
1.软件版本和环境:
系统:CentOS7系统
软件 mysql5.7.30安装包:mysql-5.7.30-1.el7.x86_64.rpm-bundle.tar
2.各个机器IP和角色
172.18.0.12 – master主库 --负责数据写入
172.18.0.13 – slaver从库1—负责数据读取
172.18.0.14 – slaver从库2 —负责数据读取
2.安装过程:
1.mysql主从数据库安装
-
安装mysql相关程序包
rpm -ivh mysql-community-common-5.7.30-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-5.7.30-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-compat-5.7.30-1.el7.x86_64.rpm rpm -ivh mysql-community-client-5.7.30-1.el7.x86_64.rpm rpm -ivh mysql-community-server-5.7.30-1.el7.x86_64.rpm rpm -ivh mysql-community-server-5.7.30-1.el7.x86_64.rpm
-
2.初始化数据库,启动mysql服务
mysqld --initialize --user=mysql 通过 cat /var/log/mysqld.log 查看初始化的root用户密码 systemctl start mysqld.service
-
master主库配置
1.设置master主库my.cof文件 [mysqld] # log_bin server-id=1 log_bin=mysql-bin //开启二进制日志 sync-binlog=1 relay-log=mysql-relay-log //开启中继日志 skip_name_resolve //关闭名称解析(非必须) binlog-ignore-db=information_schema //不进行同步的库 binlog-ignore-db=sys //不进行同步的库 binlog-ignore-db=performance_schema //不进行同步的库 2.重启数据库 systemctl restart mysqld 3.授权访问 grant replication slave on *.* to 'root'@'%' identified by 'root'; grant all privileges on *.* to 'root'@'%' identified by 'root'; flush privileges; 4.查看状态 show master status; 记住文件名和pos值,从库设置时需要用到。
-
slaver从库配置
1.配置my.cof文件 [mysqld] # log_bin server-id=2 #开启中继日志 relay-log=mysql-relay-bin #开启二进制日志 log-bin=mysql-bin #启用只读属性 read_only=1 #是否自动清空不再需要中继日志 relay_log_purge = 0 #关闭名称解析(非必须) skip_name_resolve #使得更新的数据写进二进制日志中 log_slave_updates = 1 2.重启数据库 systemctl restart mysqld 3.配置从库同步的主库信息 change master to master_host='172.18.0.12',master_port=3306,master_user='root',master_password='root',master_log_file='mysql-bin.000001',master_log_pos=869; 4.用主城复制 start slave;
2.mysql主从半同步复制设置
- master主库设置
//安装半同步插件
mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';
//查看半同步设置
mysql> show variables like '%semi%';
//启用半同步复制
mysql> set global rpl_semi_sync_master_enabled=1;
//启用1秒钟同步一次
mysql> set global rpl_semi_sync_master_timeout=1000;
- slaver库设置
//安装半同步插件
mysql> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
//启用半同步复制
mysql> set global rpl_semi_sync_slave_enabled=1;
2.测试主从半同步复制
-
主库添加记录
-
从库查看记录
-
查看日志
已进行半同步复制。