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
原文地址:https://www.cnblogs.com/liangml/p/6411689.html