Fork me on GitHub

mysql主从复制的配置总结

首先确定安装配置的环境

centOS7,mysql5.6

 

在配置之前要保证的几个点

1、系统防火墙,如果只是测试,可以关闭防火墙,如果不是测试,请开发需要使用的端口号,如3306;

开放端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent

关闭防火墙
systemctl stop firewalld.service

让防火墙重启之后也是关闭的
systemctl disable firewalld.service

2、两台机器可以互相访问,ip必须都能互相ping通。

3、两台机器最好不要使用虚拟机的克隆功能,让mysql重新安装过,这样mysql的配置文件会不一样,避免了一些错误。

4、保证两台机器的mysql版本相同,数据库,表相同。

5、数据库需要远程可以访问,需要给出任意或者确定的ip可以访问到数据库,不能让数据库只有本地能访问。

使用下面的命令可以使任意ip用户可以访问;
mysql>grant all privileges on *.* to 'root'@'%' identified by '这里是root的密码' with grant option;

 

配置步骤

 

修改主服务器master:
#vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin
server-id=1


修改从服务器slave:
#vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin
server-id=2


重启两台服务器的mysql
/etc/init.d/mysqld restart


登录主服务器的mysql,查询master的状态
mysql>show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000021 |      120 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
!注意!这两个值需要记住,记住之后请不要动主服务器的mysql,否则这两个值会改变。

 

配置从服务器Slave
mysql>change master to master_host='192.168.75.128',master_user='root',master_password='这里是root的密码',master_log_file='mysql-bin.000021',master_log_pos=120;

然后启动
mysql> start slave;

使用下面的命令查看状态
mysql> show slave status\G

看到这两个状态都是Tes才算成功。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

如果有任意一个状态为no那么查看下面四个显示的错误是什么
Last_IO_Errno: 1593
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:

一些基本错误都可以百度出来,还是比较容易解决的。

看到两个YES之后,那么你就可以测试一下主从复制的数据库是否能有用了。
主服务器添加之后从服务器应该会有一条一模一样的记录。

 

 

最后需要考虑的点

首先主从mysql的复制,只是在主服务器改了之后,从服务器会做出相应的变动,而从服务器的改动不会影响主服务器。
所以在设计数据库服务器架构的时候就要考虑,实际的情况。
如果你只是用从服务器来备份数据,那么完全可以。
如果你要实现的是读写分离,然后减少读服务器的压力,那么读取可以读从服务器,而且可以多弄几台服务器作为从服务器。
如果你需要两台服务器都可以互相复制,那么两台服务器需要互相做主从。
还有一些架构就要看具体情况了,网上有很多可以用的架构。

 

如果要复制特定的数据库,修改my.cnf

binlog-do-db=要复制的数据库名字
binlog-ignore-db=不要复制的数据库名字,mysql,test

 

参考的网站


一个是高性能mysql的一些摘录
http://blog.csdn.net/hguisu/article/details/7325124/
一个是简单的配置记录
http://369369.blog.51cto.com/319630/790921/

posted @ 2016-10-27 16:35  LinkinStar  阅读(520)  评论(0编辑  收藏  举报