mysql 双主热备

来源:互联网 发布:nginx 网站根目录 编辑:程序博客网 时间:2024/06/07 00:02

1.A服务器上创建数据库并导入数据库


 [root@dns /]# mysql -u root -p
  mysql> show databases;
  mysql> create database cdn;
  mysql> use cdn;

2.B服务器上创建数据库并导入数据库。


  [root@dns1 /]# mysql -u root -p
  mysql> show databases;
  mysql> create database cdn;
  mysql> use cdn;

3.在A和B服务器上,增加一个用户账号(backup)作为同步用户账号.


A: mysql> Grant replication slave on *.* to backup@'10.16.0.247' identified by '1234';

B: mysql> Grant replication slave on *.* to backup@'10.16.0.246' identified by '1234';


4.在B服务器上用如下命令测试backup用户能连上A服务器


 [root@dns /]# mysql -u backup -p -h 10.16.0.246
 


5.停掉A和B服务器上的mysql服务。

 6.A 服务器
 
  [root@dns /]#vi /etc/my.cnf
 
  对文件进行编辑或修改:
       server-id=1
       log-bin=mysql-bin 
       binlog-do-db=cdn
       重起数据库服务。
 
   B 服务器
   [root@dns1 /]#vi /etc/my.cnf
       server-id=2
       master-host=10.16.0.246
       master-user=backup      
       master-password=1234
       master-port=3306        
       master-connect-retry=60        

       replicate-do-db=cdn        

7.B 服务器
 
  [root@dns /]#vi /etc/my.cnf
 
  对文件进行编辑或修改:
       log-bin=mysql-bin 
       binlog-do-db=cdn
 
   A 服务器
   [root@dns1 /]#vi /etc/my.cnf
       master-host=10.16.0.247
       master-user=backup      
       master-password=1234
       master-port=3306        
       master-connect-retry=60        
       replicate-do-db=cdn

   
8.启动A、B服务器mysql服务。
 
9.A上输入show master status;
 
 mysql> show master status; 
 
          +---------------------+----------+--------------+------------------+
| File         |  Position  |  Binlog_Do_DB   | Binlog_Ignore_DB |
+-----------------+----------+--------------+------------------+
| mysql-bin.000008 |     106   | cdn      |    manual,mysql   |
+-----------------+----------+--------------+------------------+

记录File 和 Position 项目的值mysql-bin.000008和106。


 B上输入show master status;

 mysql> show master status; 
 
          +---------------------+----------+--------------+------------------+
| File         |  Position  |  Binlog_Do_DB   | Binlog_Ignore_DB |
+-----------------+----------+--------------+------------------+
| mysql-bin.000008 |     106   | cdn      |    manual,mysql   |
+-----------------+----------+--------------+------------------+
记录File 和 Position 项目的值mysql-bin.000008和106。


 *两个服务器File名可以不一样,现在两边的mysql服务就不要重启了 否则File名会改变。


10.在A服务器上,停止slave的服务,并配置连接B服务器参数。
 
   mysql> slave stop;


   mysql> CHANGE MASTER TO
-> MASTER_HOST="10.16.0.247",       
-> MASTER_USER="backup",  
-> MASTER_PASSWORD="1234",          
-> MASTER_LOG_FILE="mysql-bin.000008",             
-> MASTER_LOG_POS=106;
 
   开启slave的服务 
   mysql> slave start;

 
  在B服务器上,停止slave的服务,并配置连接A服务器参数。
 
   mysql> slave stop;


   mysql> CHANGE MASTER TO
-> MASTER_HOST="10.16.0.246",       
-> MASTER_USER="backup",            
-> MASTER_PASSWORD="1234",          
-> MASTER_LOG_FILE="mysql-bin.000008",             
-> MASTER_LOG_POS=106;
 
   开启slave的服务 

   mysql> slave start;


11.在A、B服务器上输入 show slave status\G 查看状态。

Slave_IO_Running: Yes  必须YES
Slave_SQL_Running: Yes  必须YES

 

1.  Master_host 指的是 主服务器的地址。 

2. Master_user 指的是主服务器上用来复制的用户。  从服务器会用此账号来登录主服务。进行复制。

3. Master_log_file 就是前面提到的, 主服务器上的日志文件名.

4. Read_Master_log_pos 就是前面提到的主服务器的日志记录位置, 从服务器根据这两个条件来选择复制的文件和位置。

5. Slave_IO_Running:  指的就是从服务器上负责读取主服务器的线程工作状态。 从服务器用这个专门的线程链接到主服务器上,并把日志拷贝回来。

6. Slave_SQL_Running: 指的就是专门执行sql的线程。 它负责把复制回来的Relaylog执行到自己的数据库中。 这两个参数必须都为Yes 才表明复制在正常工作。


 
 

1 0
原创粉丝点击