-
基本要求
-
两台服务器(windows,linux,mac)
-
双方mysql版本需一致,如不一致,只要主节点低于从节点
-
两台服务器防火墙关闭
-
双方数据库所用的用户,要具有远程访问的权限
-
-
主服务器配置
-
修改主服务器的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
-
授权给从数据库服务器
GRANT REPLICATION SLAVE ON *.* to 'root'@'111.111.111.111' identified by '123456'; flush privileges;
-
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';
-
重启主服务器
$ service mysqld restart
-
查看主服务器BIN日志的信息(执行完之后记录下这两个值,然后在配置完从服务器之前不要对主服务器进行任何操作,因为每次操作数据库时这两个值会发生改变)
$ show master status
-
-
从服务器配置
-
修改从服务器的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 #设只读权限
-
启动mysql服务
-
执行同步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日志的记录位置。
-
启动Slave同步进程
$ start slave;
-
-
主从同步检查
-
查看状态
$ show slave statusG
其中Slave_IO_Running 与 Slave_SQL_Running 的值都必须为YES,才表明状态正常
-
如果之前从服务器启动过需要先停止,再运行
$ stop slave
-