mysql主从复制
环境
windows: mysql 8.015
centos7:mysql 5.7
一、关闭防火墙
linux :systemctl stop firewalld
windows: 从windows安全中心关闭即可
二、修改主机配置文件
1、打开windows服务,找到mysql服务生效的配置文件的位置
2、修改配置文件
server-id=1 #服务器 id 主和从库不能就行,随便输入
log-bin=G:/MySQL/mysql/logbin/mysql-bin #二进制文件存放路径
binlog-do-db=dbtest #需要同步的数据库
binlog-ignore-db=mysql #不需要同步的数据库
3、重启mysql服务
4、创建用户、赋予权限
#创建用户
CREATE USER 'slavetest'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
#赋予权限
GRANT REPLICATION SLAVE ON *.* TO 'slavetest'@'%';
#生效
flush privileges
5、查看master状态
show master status;
三、修改从机配置文件
1、打开配置文件,配置server-id
vim /etc/my.cnf
#在配置文件里面添加
server-id=2
2、进入mysql
#停止slave
stop slave;
#重置master
reset slave;
#设置slave
change master to master_host='192.168.109.1',#主机ip
master_user='slavetest',#用户名
master_password='123456',#密码
master_log_file='mysql-bin.000002',#show master status 中的File内容
master_log_pos=155;#show master status 中的Position内容
#启动slave
start slave;
#查看状态
show slave status\G#不要加';',加';'会出现ERROR:No query specified
3、查看从机状态
#当下面两个参数都为Yes时,主从复制就搭好了
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
四、出现的错误
1、Slave_IO_Running:connectioning
首先查看日志文件cat /var/log/mysqld.log
,出现错误Error_code: 2003
,使用perror
命令查看错误码信息,结果为ILLegal error code: 2003
原因:发现主机防火墙并没有关闭
解决:将防火墙关闭即可
2、主从复制搭建成功,但是主机创建数据库,但从机没有建立
查看日志文件,出现错误Last_Errno: 22Last_Error: Error 'Character set '#255' is not a compiled character
,继续查看错误码的信息,出现 OS error code 22: Invalid argument
原因:低版本的mysql数据库没有高版本数据库的字符编码
解决:
#修改配置文件:mysql.ini
[client]下添加
default_character_set = utf8
[mysql]下添加
default_character_set = utf8
[mysqld]下添加
character_set_server = utf8
#查看是否修改成功的方法:进入mysql,使用命令查看
show variables like “%char%”;
mysql低版本和高版本复制对应关系:低版本向高版本复制可以,但高版本向低版本复制会出现字符不匹配错误