[TOC]
文档借鉴地址:
https://www.cnblogs.com/Mr-zhou/p/11470303.html
前提:
mysql已安装完毕
1 主库配置
- 编辑mysql配置文件,路径一般为/etc/mysql/mysql.conf.d/mysqld.cnf(用户在安装Mysql时指定的目录,如:/etc/my.conf等)。分别按要求在主、从mysql中的[mysqld]模块下添加如下内容:
vim /etc/my.cnf
[mysqld]
# 开启binlog
log_bin=mysql-bin
# 可选:每次操作与磁盘同步
sync-binlog=1
server-id=1
binlog-ignore-db=sys,information_schema,performance_schema
# 需要同步的数据库名称,不配置则同步所有
# binlog_do_db=
- 重启mysql ,以使配置生效
systemctl restart mysql.service
-
授权主从同步
grant replication slave on *.* to 'root'@'%' identified by 'root'; grant all privileges on *.* to 'root'@'%' identified by 'root'; flush privileges;
-
查看主库状态
show master status;
mysql> show master status \G; *************************** 1. row *************************** File: mysql-bin.000005 Position: 869 Binlog_Do_DB: Binlog_Ignore_DB: sys,information_schema,performance_schema Executed_Gtid_Set: 1 row in set (0.00 sec)
2 从库配置
- 配置文件 /etc/my.cnf
server-id=2
relay_log=mysql-relay-bin
read_only=1
binlog-ignore-db=sys,information_schema,performance_schema
-
重启生效配置
systemctl restart mysqld;
-
查看从库状态
show slave status;
-
主从初始化配置
change master to master_host='172.16.14.201',master_port=3306, master_user='slave',master_password='slave', master_log_file='mysql-bin.000001',master_log_pos=869;
master_log_file:主库binlog的文件名
master_log_pos :主库日志同步位置
-
启动从库slave服务
查看从库slave状态:
show master status;
start slave;
停止slave服务命令:stop slave;
主从错误处理
MHA集群报错:The slave I/O thread stops because master and slave have equal MySQL server UUIDs
https://blog.csdn.net/sunbocong/article/details/81634296
错误原因:主机克隆时,mysql 服务的uuid (auto.cnf)重复了
解决方案:删除auto.cnf ,重启mysqld 服务即可。
文件位置查询命令:find / |grep auto.cnf
主从同步前的数据同步
主库数据导出
[root@localhost ~]# mysqldump --all-databases > mysql_backup_all.sql -uroot -proot
主库数据导入从库
半同步复制插件安装
-
查看是否支持动态安装插件
mysql> select @@have_dynamic_loading;
-
查看已安装的插件
mysql> show plugins;
-
安装semi插件
mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';
-
查看semi配置信息
mysql> show variables like '%semi%';
-
semi配置信息修改
修改方案:有 set 命令修改;或者修改semi的配置文件。
** 开启配置
mysql> set global rpl_semi_sync_master_enabled=1;
** 配置延时1秒mysql> set global rpl_semi_sync_master_timeout=1000;
对于从库,从新配置插件后,需要重启slave;
- stop slave;
如果要清楚从库的配置,使用如下命令:
reset slave all; - start slave;