一 基础环境

主机名 系统版本 MySQL版本 主机IP
master CentOS 6.8 MySQL 5.6 172.24.8.10
slave01 CentOS 6.8 MySQL 5.6 172.24.8.11
二 实际部署

2.1 安装MySQL
1 [root@Master ~]# yum list installed | grep mysql #查看是否存在其他MySQL组件 2
[root@Master ~]# yum -y remove mysql-libs.x86_64 #为避免冲突引发报错,卸载已存在的组件 3
[root@Master ~]# wget http:
//repo.mysql.com/mysql-community-release-el6-7.noarch.rpm 4 [root@Master ~]#
rpm -ivh mysql-community-release-el6-7.noarch.rpm 5 [root@Master ~]# yum
install mysql-community-server -y 6 [root@Master ~]# chkconfig --list | grep
mysqld #查看MySQL是否加入启动项 7 [root@Master ~]# chkconfig mysqld on  
2.2 初始化MySQL
1 [root@Master ~]# service mysqld start 2 [root@Master ~]#
mysql_secure_installation 3 [root@Master ~]# service iptables stop 4
[root@Master ~]# chkconfig iptables off 5 [root@Master ~]# vi
/etc/sysconfig/selinux 6 SELINUX=disabled   注意:以上操作在Slave主机上也需要执行。 安装参考:
http://www.cnblogs.com/007sx/p/7083143.html
<http://www.cnblogs.com/007sx/p/7083143.html>
2.3 master my.cf配置
1 [root@Master ~]# vi /etc/my.cnf 2 [mysqld] 3 …… 4 server-id=1
#设置主服务器master的id 5 log-bin=mysql-bin #配置二进制变更日志命名格式   注意:
master开启二进制日志后默认记录所有库所有表的操作,可以通过配置来指定只记录指定的数据库甚至指定的表的操作,具体在mysql配置文件的[mysqld]可添加修改如下选项:
1 # 不同步哪些数据库 2 binlog-ignore-db = mysql 3 binlog-ignore-db = test 4
binlog-ignore-db = information_schema 5 # 只同步哪些数据库,除此之外,其他不同步 6 binlog-do-db =
mysqltest  
2.4 创建账号
1 [root@Master ~]# mysql -uroot -p 2 Enter password: 3 mysql> grant
replication slave on *.* to 'repl_user'@'172.24.8.11' identified by 'x12345678';
4 mysql> flush privileges; 5 [root@Master ~]# service mysqld restart 6
[root@Master ~]# mysql -uroot -p 7 Enter password: 8 mysql> show master status;
 
<https://img2018.cnblogs.com/blog/680719/201901/680719-20190127115449046-1185528042.png>
file:mysql-bin.000001 position:120
2.5 slave my.cf配置
1 [root@Master ~]# vi /etc/my.cnf 2 [mysqld] 3 server-id=2 #设置从服务器slave的id
4 log-bin=mysql-bin #如果此slave是其他slave的master,则此项也必须开启 5
relay_log=mysql-relay-bin #配置二进制relay日志命名格式 6 log_slave_updates=1
#表示slave将复制事件写进自己的二进制日志 7 read_only=1  
2.6 启动slave
1 [root@Slave01 ~]# service mysqld restart 2 [root@Slave01 ~]# mysql -uroot
-p 3 Enter password: 4 mysql> change master to master_host='172.24.8.10', 5
-> master_user='repl_user', 6 -> master_password='x12345678', 7 ->
master_log_file='mysql-bin.000001', 8 -> master_log_pos=120; 9 mysql> show
slave status\G #查看slave状态 10 …… 11 Slave_IO_State: 12 Master_Host: 172.24.8.10
13 Master_User: repl_user 14 Master_Port: 3306 15 Connect_Retry: 60 16
Master_Log_File: mysql-bin.000001 17 Read_Master_Log_Pos: 120 18
Relay_Log_File: =mysql-relay-bin.000001 19 Relay_Log_Pos: 4 20
Relay_Master_Log_File: mysql-bin.000001 21 Slave_IO_Running: No 22
Slave_SQL_Running: No 23 …… 24 Exec_Master_Log_Pos: 120 25 Relay_Log_Space:
120 26 …… 27 Seconds_Behind_Master: NULL 28 Master_SSL_Verify_Server_Cert: No
29 Master_Info_File: /var/lib/mysql/master.info 30 SQL_Delay: 0 31
SQL_Remaining_Delay: NULL 32 Slave_SQL_Running_State: 33 Master_Retry_Count:
86400 34 ……   提示: Slave_IO_State, Slave_IO_Running,
和Slave_SQL_Running是No,表明slave还没有开始复制过程。
2.7 手动同步

如果Master已经存在数据,则在开启主备复制之前,需要将Master和Slave手动同步一次(/var/lib/mysql整个目录打包tar.gz),具体方法参考《004.MySQL主库手动复制至从库》。
注意:本实验都是重新安装的MySQL,可直接启动同步。
三 启动主从

3.1 Slave启动主从服务
1 [root@Slave01 ~]# service mysqld restart 2 [root@Slave01 ~]# mysql -uroot
-p 3 Enter password: 4 mysql> start slave; 5 mysql> show slave status\G
#查看slave状态 6 …… 7 Slave_IO_State: Waiting for master to send event 8
Master_Host: 172.24.8.10 9 Master_User: repl_user 10 Master_Port: 3306 11
Connect_Retry: 60 12 Master_Log_File: mysql-bin.000001 13 Read_Master_Log_Pos:
120 14 Relay_Log_File: =mysql-relay-bin.000001 15 Relay_Log_Pos: 283 16
Relay_Master_Log_File: mysql-bin.000002 17 Slave_IO_Running: YES 18
Slave_SQL_Running: YES 19 …… 20 Exec_Master_Log_Pos: 120 21 Relay_Log_Space:
120 22 …… 23 Master_Info_File: /var/lib/mysql/master.info   提示:
slave的I/O和SQL线程都已经开始运行,而且Seconds_Behind_Master不再是NULL。日志的位置增加了,意味着一些事件被获取并执行了。如果你在master上进行修改,你可以在slave上看到各种日志文件的位置的变化,同样,你也可以看到数据库中数据的变化。
3.2 验证主从
在Master主服务器上创建库并插入相应数据: 1 [root@Master ~]# mysql -uroot -p 2 Enter password:
3 mysql> create database mysqltest; 4 mysql> use mysqltest; 5 mysql> create
table user(idint(5),name char(10)); 6 mysql> insert into user values
(00001,'zhangsan'); 7 在Slave从服务器上进行验证: 8 [root@Master ~]# mysql -uroot -p 9
Enter password: 10 mysql> show databases; 11 mysql> select * from
mysqltest.user;  
<https://img2018.cnblogs.com/blog/680719/201901/680719-20190127115449601-417529000.png>
结论: 从上图中的结果,我们可以看到mysql主从复制已经在起作用了,我们在主数据库中写入的数据已经复制到我们的从数据库中了。 提示: 若出现以下报错:
<https://img2018.cnblogs.com/blog/680719/201901/680719-20190127115449950-476083984.png>
可尝试重启slave: 1 mysql> reset slave;

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信