mysql主从复制
-
创建两个虚拟机-centos7(参考安装虚拟机文档)
-
在虚拟机安装mysql5.6 (参考安装mysql文档) 第二台克隆即可
-
关闭两台虚拟机的防火墙
- systemctl stop firewalld.service
-
修改克隆机上mysql的UUID
- vim /var/lib/mysql/auto.cnf
-
配置主机
- vim /etc/my.cnf
- 在[mysqld]下加入 log-bin=mysql-bin server_id=173 # (一般取ip最后部分)
- 重启mysql service mysqld restart
- vim /etc/my.cnf
-
配置从机
- vim /etc/my.cnf
- 在[mysqld]下加入 ①server_id=161
- 重启mysql service mysqld restart
- vim /etc/my.cnf
-
设置两台mysql可以远程连接
- GRANT ALL PRIVILEGES ON . TO ‘root’@’%'IDENTIFIED BY ‘root’ WITH GRANT OPTION
-
操作主机
- 创建连接主机的用户:CREATE USER ‘slave01’@’%’ IDENTIFIED BY ‘root’;
- 授予权限:GRANT REPLICATION SLAVE ON . TO ‘slave01’@’%’;
- 刷新权限:FLUSH PRIVILEGES;
-
查看主机日志:SHOW MASTER STATUS
-
操作从机
mysql>CHANGE MASTER TO MASTER_HOST = '192.168.10.173',
MASTER_USER = 'slave01', MASTER_PASSWORD = 'root',
MASTER_PORT = 3306, MASTER_LOG_FILE = 'mysql-bin.000042' ,
MASTER_LOG_POS = 445 ;
语句意思:
MASTER_HOST:主服务器的IP。
MASTER_USER:配置主服务器时建立的用户名
MASTER_PASSWORD:用户密码
MASTER_PORT:主服务器mysql端口,如果未曾修改,默认即可。
MASTER_LOG_FILE:日志文件名
MASTER_LOG_POS:文件指针位置
- 开启从机备份
- 开启从机备份:start slave
- 查看从机状态:show slave status\G;
- 测试
- 在主机插入数据。从重机查看。
- 常见问题
ERROR 1200 (HY000): The server is not configured as slave; fix in config file or with CHANGE MASTER TO
原因一。从机配置文件没有server-id
原因二。从机与主机server-id 一致
原因三。没有配置从机
lave failed to initialize relay log info structure from the repositor
原因一。mysql默认产生的relay_log名被该server上的另一个mysql slave占用了
解决方法:
1.在主机my.cnf中添加,relay_log=/db/mysql56/logs/relay_98_3326再重启mysql
2.在从机执行 stop slave; 再执行reset slave;
SHOW SLAVE STATUS\G;时 出现以下情况;也是代表配置失败
. 原因:主机名或用户名或密码或pos值不对
解决:重新配置
SHOW SLAVE STATUS\G;时 出现以下情况;也是代表配置失败
原因一 mysql是通过克隆安装的。UUID会一样。所以会出现这样的问题
解决:查看主机和从机UUID是否一致
show variables like ‘%server_uuid%’;
进入到主机或从机/var/lib/mysql/auto.cnf修改uuid之后重启该数据库
插入数据出下以下情况
问题:数据编码问题
解决方案:
修改mysql的配置文件(主从都修改)
打开vim /etc/my.cnf加入以下配置
[client]
default-character-set=utf8
/[mysqld]/
character-set-server=utf8
重启即可