1.修改主服务器mysql配置
首先修改主服务器权限
如果执行下面的语句返回 ERROR 1193 (HY000): Unknown system variable 'validate_password_policy'
可以先执行 show variables like 'validate_password%';
如果返回 Empty set
在mysql命令行中执行 install plugin validate_password soname 'validate_password.so'; 就行了
set global validate_password_policy=0;
set global validate_password_length=1;
# 修改远程权限
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
# 刷新权限
flush privileges;
# 打开配置文件
vi /etc/my.cnf
# 修改配置文件 mysqld模块中如下配置
log-bin=master-bin #二进制文件名称
binlog-format=ROW #二进制日志格式,有row/statement/mixed三种格式,row把改变的内容复制过来 而不是把命令在从服务器上执行一遍 , statement是主服务器上执行的sql语句 在从服务器上执行同样的语句 ,mixed是默认采用基于语句的我无法精确的复制时 就会采用基于行的复制 . . . mysql默认采用语句的复制 , 效率比较高
server-id=1 #要求各服务器的id必须不一样
binlog-do-db=msb #同步的数据库名称 , 不是所有数据库都复制可以不指定
重启主服务器mysql后执行 show master status
2. 修改从服务器配置
首先创建database , 名字为msb(主服务器同步同名)
配置从服务器登录主服务器的账号权限
set global validate_password_policy=0;
set global validate_password_length=1;
# 修改复制权限
grant replication slave on *.* to 'root'@'%' identified by '123456';
# 刷新权限
flush privileges;
修改从服务器配置/etc/my.cnf
#mysqld模块中添加配置
log-bin=master-bin #二进制文件名称
binlog-format=ROW #二进制文件格式
server-id=2 #服务器id ,不可重复
重启从服务器后命令行登录
连接主服务器
#连接主服务器
主服务器查看配置 show master status;
change master to master_host='192.168.149.140',master_user='root',master_password='123456',master_port=3306,master_log_file='mysql-bin.000009',master_log_pos=154;
master_host 主服务器地址
master_user 主服务器用户
master_password 主服务器密码
master_port 主服务器端口
master_log_file 主服务器文件名
master_log_pos 主服务器文件位置
也可以在数据库中添加配置文件
server_id = 2
log-bin = /usr/local/mysql/log/solve-bin.log
master-host = 192.168.149.140
master-user = root
master-pass = 123456
master-port = 3306
master-connect-retry = 60
#启动slave
start slave;
#查看slave状态 (这里注意没有分号)
show slave status\G
主要查看slave_io_running 和 slave_sql_running
如果这两个有任何一个不是 yes , 可以在/var/log/mysqld.log 或者show slave status\G中查看
报错信息 每次都需要stop slave 重新执行
Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it)
在mysql命令行中查询
show variables like 'server_id';
如果主从数据库是一致的,配置文件没有生效, 可以运行 但是会重启失效
set global server_id=3
Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
可以运行 下句 , 看下主从数据库是一样的值吗 , 是一样的就找到问题了
show variables like 'server_uuid';
其他问题自行百度