mysql 5.1 双主互备

Posted on Posted in mysql
Tips: 本文创建于2015年11月16日,已超过 2 年,内容或图片可能已经失效!

mysql 主主互备

环境

  1. centos 6.5  
  2.   
  3. [root@localhost ~]# mysql -V  
  4. mysql  Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64) using readline 5.1  

关闭防火墙和selinux

  1. /etc/init.d/iptables stop  
  2. setenforce 0  

1、修改mysql配置文件

  1. [mysqld]  
  2. datadir=/var/lib/mysql  
  3. socket=/var/lib/mysql/mysql.sock  
  4. user=mysql  
  5. # Disabling symbolic-links is recommended to prevent assorted security risks  
  6. symbolic-links=0  
  7.   
  8. server-id=1     #主要在mysqld中加这段  
  9. log-bin=mysql-bin  
  10. relay-log=mysql-relay-bin  
  11. replicate-wild-ignore-table=mysql.%  
  12. replicate-wild-ignore-table=test.%  
  13. replicate-wild-ignore-table=informatioin_schema.%  
  14.   
  15. [mysqld_safe]  
  16. log-error=/var/log/mysqld.log  
  17. pid-file=/var/run/mysqld/mysqld.pid  

  1. [mysqld]  
  2. datadir=/var/lib/mysql  
  3. socket=/var/lib/mysql/mysql.sock  
  4. user=mysql  
  5. # Disabling symbolic-links is recommended to prevent assorted security risks  
  6. symbolic-links=0  
  7.   
  8. server-id=2  
  9. log-bin=mysql-bin  
  10. relay-log=mysql-relay-bin  
  11. replicate-wild-ignore-table=mysql.%  
  12. replicate-wild-ignore-table=test.%  
  13. replicate-wild-ignore-table=informatioin_schema.%  
  14.   
  15. [mysqld_safe]  
  16. log-error=/var/log/mysqld.log  
  17. pid-file=/var/run/mysqld/mysqld.pid  

注意:不要使用replicate-do-db或replicate-ignore-db选项,因为这样可能产生跨库更新失败的问题。
推荐在从库上使用replicate-wild-do-table和replicate-wild-ignore-table两个选项来解决复制过滤问题。

2、手动同步数据库

首先在主上备份mysql数据

  1. mysql> FLUSH TABLES WITH READ LOCK;  
  2. Query OK, 0 rows affected (0.00 sec)  
  3.   
  4. 再复制一个终端执行  
  5. [root@localhost ~]# cd /var/lib/  
  6. [root@localhost lib]# tar zcvf mysql.tgz mysql  
  7. [root@localhost lib]# scp mysql.tgz root@192.168.1.153:/var/lib/  

在备上解压

  1. [root@localhost lib]# tar zxvf mysql.tgz  

重启主备的mysql服务

3、创建复制用户并授权

  1. mysql> grant replication slave on *.* to 'repl_user'@'192.168.1.153' identified by 'repl_passwd';  
  2. Query OK, 0 rows affected (0.00 sec)  
  3.   
  4. mysql> show master status;  
  5. +------------------+----------+--------------+------------------+  
  6. | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |  
  7. +------------------+----------+--------------+------------------+  
  8. | mysql-bin.000007 |      106 |              |                  |  
  9. +------------------+----------+--------------+------------------+  
  10. 1 row in set (0.00 sec)  

  1. mysql> change master to \      
  2.     -> master_host='192.168.1.143',      
  3.     -> master_user='repl_user',      
  4.     -> master_password='repl_passwd',      
  5.     -> master_log_file='mysql-bin.000007',  #这两段和上面的结果对应      
  6.     -> master_log_pos=106;      
  7. Query OK, 0 rows affected (0.07 sec)      
  8.   
  9. mysql> start slave;    
  10. Query OK, 0 rows affected (0.00 sec)  
  11.       
  12. mysql> show slave status\G      
  13. *************************** 1. row ***************************      
  14.                Slave_IO_State: Waiting for master to send event      
  15.                   Master_Host: 192.168.1.143      
  16.                   Master_User: repl_user      
  17.                   Master_Port: 3306      
  18.                 Connect_Retry: 60      
  19.               Master_Log_File: mysql-bin.000007      
  20.           Read_Master_Log_Pos: 187      
  21.                Relay_Log_File: mysql-relay-bin.000004      
  22.                 Relay_Log_Pos: 332      
  23.         Relay_Master_Log_File: mysql-bin.000007      
  24.              Slave_IO_Running: Yes      
  25.             Slave_SQL_Running: Yes      
  26.               Replicate_Do_DB:       
  27.           Replicate_Ignore_DB:       
  28.            Replicate_Do_Table:       
  29.        Replicate_Ignore_Table:       
  30.       Replicate_Wild_Do_Table:       
  31.   Replicate_Wild_Ignore_Table: mysql.%,test.%,informatioin_schema.%      
  32.                    Last_Errno: 0      
  33.                    Last_Error:       
  34.                  Skip_Counter: 0      
  35.           Exec_Master_Log_Pos: 187      
  36.               Relay_Log_Space: 632      
  37.               Until_Condition: None      
  38.                Until_Log_File:       
  39.                 Until_Log_Pos: 0      
  40.            Master_SSL_Allowed: No      
  41.            Master_SSL_CA_File:       
  42.            Master_SSL_CA_Path:       
  43.               Master_SSL_Cert:       
  44.             Master_SSL_Cipher:       
  45.                Master_SSL_Key:       
  46.         Seconds_Behind_Master: 0      
  47. Master_SSL_Verify_Server_Cert: No      
  48.                 Last_IO_Errno: 0      
  49.                 Last_IO_Error:       
  50.              &nbs
    p; Last_SQL_Errno: 0      
  51.                Last_SQL_Error:       
  52. 1 row in set (0.00 sec)      
  53.     
  54.     

4、配置双主

在备上操作

  1. mysql> grant replication slave on *.* to 'repl_user'@'192.168.1.143' identified by 'repl_passwd';  
  2. Query OK, 0 rows affected (0.00 sec)  
  3.   
  4. mysql> show master status;  
  5. +------------------+----------+--------------+------------------+  
  6. | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |  
  7. +------------------+----------+--------------+------------------+  
  8. | mysql-bin.000008 |      420 |              |                  |  
  9. +------------------+----------+--------------+------------------+  
  10. 1 row in set (0.00 sec)  

在主上操作

  1. mysql> change master to \  
  2.     -> master_host='192.168.1.153',  
  3.     -> master_user='repl_user',  
  4.     -> master_password='repl_passwd',  
  5.     -> master_log_file='mysql-bin.000008',  
  6.     -> master_log_pos=420;  
  7. Query OK, 0 rows affected (0.05 sec)  
  8.   
  9. mysql> start slave;  
  10. Query OK, 0 rows affected (0.01 sec)  
» 转载请注明来源:若我若鱼 » mysql 5.1 双主互备

Leave a Reply

Your email address will not be published. Required fields are marked *

ten − 3 =