-
准备工作
-
CentOS操作系统 192.168.18.179
-
CentOS操作系统 192.168.18.180
两台操作系统中都安装了MySQL数据库,安装MySQL的过程可参考 CentOS下安装MySQL5.7(图文)
-
-
MySQL的主从复制依靠的是二进制日志,其实现过程为:主服务器会将增删改的操作记录到日志文件里面,从服务器拿到主服务器的日志文件以后,再执行一遍就实现了主从服务器的同步。
-
在本次的演示中192.168.18.179作为主服务器,192.168.18.180作为从服务器。
-
在主服务器的配置文件中增加如下的配置
[mysqld] log-bin=mysql-bin //[必须]启用二进制日志 binlog_format=mixed //二进制日志的格式,有三种:statement/row/mixed,具体分别不多做解释,这里使用mixed server-id=179 //[必须]服务器唯一ID,默认是1,一般取IP最后一段
-
重启主服务器
service mysqld restart;
-
登录到主服务器
mysql -uroot -p
然后输入密码
-
为从服务器分配一个账号,通过这个账号从服务器就可以拿到主服务器的日志文件
GRANT replication slave ON *.* TO 'slave'@'%' identified by 'slave';
-
查询主服务器配置状态
show master status;
-
配置从服务器,修改配置文件/etc/my.cnf
log-bin=mysql-bin #[不是必须]启用二进制日志 binlog_do_db=test //同步的数据库 server-id=180
-
重启从服务器
service mysqld restart;
-
登录到从服务器
mysql -uroot -proot
-
关闭slave同步(一定要先关闭)
stop slave;
-
开始配置,执行下面的命令
change master to master_host='192.168.18.179', --主服务器 master_user='slave', --登录到主服务器的用户名 master_password='slave', --登录到主服务器的密码 master_log_file='mysql-bin.000001', --主服务器的日志文件 master_log_pos=438; --主服务器的bin日志的记录位置,最后一项不需要加引号。否则配置失败
-
启动slave同步
start slave;
-
检查从服务器复制功能状态
show slave status;
如果图中的两项都为yes,则表示主从配置已经生效了
-
最好在从服务器创建一个只读账号,防止主从复制失效
GRANT Select ON *.* TO reader@"%" IDENTIFIED BY "reader";
-
测试主从复制的功能
-
在主服务器上面新建一个数据库test
此时发现从服务器上面也多了一个test的数据库
-
在主服务器的test库下面新建一张表t_user
此时发现从服务器上面也多了一个一模一样的表t_user
-
当对主服务器上面的表进行增删改操作时,发下从服务器也能自动同步,此时主从复制的MySQL就成功搭建。
-
-
但是如果对从服务器进行增删改操作的时候,主服务器无法进行同步,再次对主服务器进行增删改的操作时发现已经无法操作,所以为了保证主从的正常运行,最好在从服务器创建一个只读的用户,对从服务器只进行读的操作。
-
创建只读用户的sql为:
GRANT Select ON *.* TO reader@"%" IDENTIFIED BY "reader"; --创建一个用户名和密码都是reader的只读用户
ContOS下搭建MySQL主从复制
