MySQL主从复制配置记录
准备阶段
- 两台服务器:(主master)192.168.1.2;(从slave)192.168.1.3
- MySQL版本最好一样,不一样没关系,但
一定
要保证版本都在5.6.x
及以上 - 注意防火墙
- 注意放行
3306
端口 - 注意要开启MySQL远程连接权限
- 注意主从库的数据要保证一致
配置主服务器
配置文件
/etc/my.cnf
配置信息
vim /etc/my.cnf
在
[mysqld]
下面配置如下:server-id=1 #必须。设置服务器id,为1表示主服务器。规范为服务器IP的最后段(一般文件里已存在,修改就行,没有加上) log_bin=mysql-bin #必须。启动MySQL二进制日志系统。(一般文件里已存在,修改就行,没有加上) binlog-do-db=jiajiale_dskjwl_ #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行。 binlog-ignore-db=mysql #不同步mysql系统数据库。
:wq! 保存退出
进入MySQL终端
mysql -u root -p
新建一个MySQL用户
salve
(下面从服务器要用到此配置)
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.1.%' IDENTIFIED BY 'slave'; 这里的IP是从服务器IP
刷新权限(很重要!不要漏掉!)
mysql> flush privileges;
重启MySQL服务
service mysql restart
再次回到MySQL终端,执行
mysql> show master status;
红框内的值从服务器要用到,很重要。此时不要再动主服务器了,以免position值变动。
配置从服务器
配置文件
/etc/my.cnf
配置信息
vim /etc/my.cnf
在
[mysqld]
下面配置如下:server-id=2 #必须。设置服务器id,为2表示从服务器。规范为服务器IP的最后段(一般文件里已存在,修改就行,没有加上) log_bin=mysql-bin #必须。启动MySQL二进制日志系统。(一般文件里已存在,修改就行,没有加上) binlog-do-db=jiajiale_dskjwl_ #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行。 binlog-ignore-db=mysql #不同步mysql系统数据库。
:wq! 保存退出
重启MySQL服务
service mysql restart
进入MySQL终端
mysql -u root -p
执行
mysql> change master to master_host='192.168.1.2',master_user='slave',master_password='slave',master_log_file='mysql-bin.000065',master_log_pos=154;
停止slave从库
mysql> stop slave;
最好执行一下 第一次操作可忽略
启动slave从库
mysql> start slave
- 查看slave
mysql> show slave status \G 注意此处不要分号
结果如下图:
当Slave_IO_Running
和Slave_SQL_Running
都为Yes
时才算成功!
测试
省略…
本作品采用《CC 协议》,转载必须注明作者和本文链接
还有一种是基于GTID的同步模式
先收藏,用到的时候再说 :see_no_evil:
:+1:
假如主服务器宕机了,重新启动后,position产生变化,从服务器也修改position值,这中间是否会有数据的遗失呢?谢谢