1.基本要求
1)两台服务器(windows,linux,mac)
2)双方mysql版本需一致,如不一致,只要主节点低于从节点
3)两台服务器防火墙关闭
4)双方数据库所用的用户,要具有远程访问的权限
2.主服务器配置
1)修改主服务器的MySQL配置文件,window(my.ini),linux(my.cnf)
#mysql唯一id server-id = 1 #二进制日志文件,此项为必填项,否则不能同步数据; log-bin = "mysql-bin" #指定二进制错误文件 log-error="mysql-error" #需要同步的数据库,如果需要同步多个数据库; binlog-do-db = demo #binlog-do-db = slaveDB1 #binlog-do-db = slaveDB2 #不需要同步的数据库 binlog-ignore-db = mysql
2)授权给从数据库服务器
GRANT REPLICATION SLAVE ON *.* to 'root'@'111.111.111.111' identified by '123456'; flush privileges;
3)mysql8.0版本授权
CREATE USER 'root'@'111.111.111.111' IDENTIFIED WITH mysql_native_password BY '123456'; GRANT REPLICATION SLAVE ON *.* TO 'root'@'222.222.222.222';
4)重启主服务器
$ service mysqld restart
5)查看主服务器BIN日志的信息(执行完之后记录下这两个值,然后在配置完从服务器之前不要对主服务器进行任何操作,因为每次操作数据库时这两个值会发生改变)
$ show master status
3.从服务器配置
1)修改从服务器的MySQL配置文件,window(my.ini),linux(my.cnf),配置server-id 的值,并确保这个ID没有被别的MySQL服务所使用
server-id=2 #默认是1改成2
log-bin="mysql-bin" #这行本身有
replicate-do-db=demo #需要同步的数据库
replicate-ignore-db=mysql #不同步系统数据库
read_only #设只读权限
2)启动mysql服务
3)执行同步sql语句
change master to master_host='111.111.111.111', master_user='root', master_password='123456', master_log_file='mysql-bin.000001', master_log_pos=154; # MASTER_HOST : 设置要连接的主服务器的ip地址 # MASTER_USER : 设置要连接的主服务器的用户名 # MASTER_PASSWORD : 设置要连接的主服务器的密码 # MASTER_LOG_FILE : 设置要连接的主服务器的bin日志的日志名称 # MASTER_LOG_POS : 设置要连接的主服务器的bin日志的记录位置。
4)启动Slave同步进程
$ start slave;
4.主从同步检查
1)查看状态
$ show slave status\G
其中Slave_IO_Running 与 Slave_SQL_Running 的值都必须为YES,才表明状态正常
2)如果之前从服务器启动过需要先停止,再运行
$ stop slave