mysql主从同步
如果主从配置之前安装了云平台,请停止云平台后在进行mysql主从配置。
1、登录master数据库,检查数据库端口防火墙设置,允许远程客户连接,如果没有,执行以下操作。
执行命令:iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
/etc/init.d/iptables save
注:参照具体操作系统进行配置
2、编辑master数据库上的/etc/my.cnf,并将以下语句添加至[mysql]小节datadir语句下的区域
log_bin=mysql-bin
server_id=1
3、重起master数据库mysql
#service mysqld restart
4、在master数据库上创建一个replication账户并给予权限。我们将使用“cloud-repl”用户,密码“password”。这里假定master数据库和slave数据库运行在10.117.66.0/25网络。
mysql>create user 'cloud-repl'@'10.117.26.%' identified by 'password';(此处写实际主数据库ip)
5、mysql> grant replication slave on *.* to 'cloud-repl'@'10.117.66.%' identified by 'password'; (此处从服务器ip)
mysql> flush privileges;
mysql> flush tables with read lock;
6、保持当前shell下MySQL 会话的运行
7、在新的shell启动第二个MySQL 会话
8、获取数据库的当前position
mysql>show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 412 | | |
+------------------+----------+--------------+------------------+
9、记下实例返回的File和position。
10、压缩master数据库的数据文件
#tar zcf /tmpdatabak.tgz /var/lib/mysql
11、登录slave数据库所在的服务器,安装mysql,版本要求跟master数据库一致。
注:安装mysql,需要按照elaster的方式安装
12、停止slave数据库
#service mysqld stop
13、拷贝master数据库的tmpdatabak.tgz到slave数据库的根目录/,在主数据库操作复制命名如下:
scp /tmpdatabak.tgz root@10.110.122.202:/
解压到目录/var/lib/mysql
#cd /
#tar -zxvf tmpdatabak.tgz
14、检查slave数据库端口防火墙设置,允许远程客户连接,如果没有,执行以下操作。
iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
/etc/init.d/iptables save
注:参照具体操作系统进行配置
15、编辑slave数据库上的my.cnf,并添加如下语句于[mysql]小节的datadir语句下
server_id=2
16、重启slave数据库MySQL
/etc/init.d/mysqld start
17、指示slave数据库连接master数据库并进行复制。
使用之前步骤里已经使用的值替换IP地址、密码、log file和position。在slave执行如下操作
mysql>change master to master_host='10.117.66.137',
master_user='cloud-repl',
master_password='password',
master_log_file='mysql-bin.000001',
master_log_pos=412;
18、启动slave数据库上的replication
mysql> start slave;
19、登录到master数据库释放master数据库库的lock(可以等slave数据库准备完成再解锁)
mysql> unlock tables;
20、测试master数据库和slave数据库配置是否正常工作,检查一下操作后,看master数据库和slave数据库是否一致:
增加表、删除表
增加记录、删除记录、修改记录
master数据库重起后,工作是否正常
slave数据库重起后,工作是否正常
命令查看同步状态
mysql>show slave status;
mysql>show slave status \G;
如果第一遍失败,第二遍操作注意事项
1、在slave节点执行
mysql> show slave status;
mysql> stop slave;
2、删除从数据库默认安装目录 /var/lib/mysql 下所有文件,以免主数据库文件覆盖时与第一次未成功的文件合并
3、确保具有replication slave权限的用户可以从slave节点访问master节点 例如master ip为10.117.66.137 slave ip为10.117.66.138则,在slave节点执行以下命令测试:
mysql -h10.117.66.137 -ucloud-repl -ppassword