mysql主从复制配置
以centos 7为例:
两台虚拟机:
192.168.65.157 主节点(master)
192.168.65.177 从节点(slave)

一.master配置文件
vim /etc/my.cnf1.在[mysqld]添加内容:
server-id=1
log-bin=mysql-bin
binlog_format=mixed
binlog_row_image=MINIMAL
binlog-rows-query-log_events=1
binlog-ignore-db=mysql
binlog-ignore-db=sys
二.slave配置文件
vim /etc/my.cnf1.在[mysqld]添加内容:
server-id=2
relay-log=mysql-relay-log 三.MySQL创建主从同步账号并授权
1.在主库创建一个专门用来复制的数据库用户,所有从库都用这个用户来连接主库,确保这个用户只有复制的权限:
CREATE USER 'slave'@'192.168.%.%' IDENTIFIED BY 'slave';
GRANT replication ON *.* TO 'slave'@'192.168.%.%' WITH GRANT OPTION;2.如果出现密码不符合要求的问题则按以下解决,修改密码的策略,使得可以设置简单的密码:
SHOW VARIABLES LIKE 'validate_password%';密码的长度是由validate_password_length决定的,但是可以通过以下命令修改:
set global validate_password_length=4;validate_password_policy决定密码的验证策略,默认等级为MEDIUM(中等),可通过以下命令修改为LOW(低):
set global validate_password_policy=0;3.查询已创建的用户:
select user,host from mysql.user;授予用户复制权限:
grant replication slave on *.* to 'slave'@'192.168.%.%';查看用户权限:
show grants for 'slave'@'192.168.%.%';如果权限过大回收用户其他权限:
REVOKE ALL PRIVILEGES ON *.* FROM 'slave'@'192.168.%.%';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'192.168.%.%';刷新权限:
flush privileges4.关闭防火墙:
systemctl stop firewalld
systemctl disable firewalld
再从服务器上使用slave账户远程连接主服务器:
mysql -h192.168.65.157 -uslave -p连接成功查看MySQL主服务器的状态
show master status;四.MySQL主库备份数据:
mysqldump -uroot -p123456 --master-data --all-databases > master.sql1.将备份的文件master.sql拷贝到从服务器
scp master.sql 192.168.65.177:/root2.在从数据库中执行下列语句,将备份数据还原到从服务器中,同步数据:
mysql -p123456 < master.sql五.从服务器登录mysql进行主节点配置:
change master to
master_host='192.168.65.157',
master_port=3306,
master_user='slave',
master_password='slave',
master_log_file='mysql-bin.000004',
master_log_pos=155;1.主要是这两个参数需要再主节点查看自己的:
在主节点服务器输入:
show master status\G显示以下内容:
master_log_file='mysql-bin.000004',
master_log_pos=155;2.从节点启动slave:
start slave;查看从服务状态:
show slave status\G
出现主节点的信息即可。
六.验证是否成功:
1.在主节点数据库中创建一个数据库:

2.在从服务器mysql查看是否有新建的库:

七.配置过程中遇到的问题:
1.[mysql] [主从同步错误] Last_IO_Errno: 2061
Last_IO_Errno: 2061
原因:加密方式和解密方式不一致,修改密码加密规则.进入mysql控制台
ALTER USER 'slave'@'192.168.65.%' IDENTIFIED WITH mysql_native_password BY 'slave';
FLUSH PRIVILEGES;