欢迎光临计算机基础知识学习乐园-电脑医生网!

完整的mysql主从配置方法详解

http://www.dndoctor.net 时间:2014-05-23 19:56 来源:未知 作者:乜欣 点击:次 (编辑:乜欣)

mysql主从配置对于我来讲不是很难事,但是对于很多的新手朋友来讲是非常困难的一件事件了,下面我来给大家介绍一篇完整的mysql主从配置方法,希望例子能给你带来帮助。 mysql主从分
mysql主从配置对于我来讲不是很难事,但是对于很多的新手朋友来讲是非常困难的一件事件了,下面我来给大家介绍一篇完整的mysql主从配置方法,希望例子能给你带来帮助。
 
      mysql主从分两个角色
 
       1、主服务器    master
 
       2、从服务器    slave
 
      mysql主从复制就是两个服务器之间数据库的同步,也可以理解成对主服务器的一个备份,当主服务器的数据进行了变更,那么从服务器也会自动更新,其实是 通过bin-log日志实现的,也就说他们中间是传输binlog日志的。这样我们就可以对数据进行多个节点进行冗余从而保证可用性!电脑医生
 
      公司现在有三台服务器,一台阿里云,两台VPS,现在需要把阿里云上的数据库同步到其他两台VPS上。阿里云做主服务器其他两台服务器做从服务器
 
      操作如下:
 
      1、在阿里云服务器中修改my.cnf文件(一般在/etc/my.cnf)
 


 代码如下

 

 


   

 [mysqld]
        log-bin=mysql-bin   //[必须]启用二进制日志
       server-id=1         //[必须]服务器唯一ID,默认是1,一般取IP最后一段
       binlog-do-db=wordpress   //[可选] 设置需要同步的数据,如果不设置将同步所有数据库
       binlog_ignore_db=mysql  //[可选] 忽略mysql数据,因为mysql数据库是mysql的一些帐户存放,这个没有必要同步

 

      2、来到从服务修改my.cnf
 


 代码如下

 

 

 [mysqld]
        log-bin=mysql-bin   //[必须]启用二进制日志
       server-id=2       //[必须]服务器唯一ID,默认是1,一般取IP最后一段

 
      3、重启这两台服务器的mysql(第二台从服务器和第一台一样,这里就只写第一个的配置了)
 
      4、登录主服务器为从服务器授权

 


 代码如下

 

 

GRANT REPLICATION SLAVE ON *.* to 'sync'@'%' identified by 'sync'; //不建议使用root

 
“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用从服务器IP代替,如192.168.145.226,加强安全。
 
5、查看主服务器的状态

 


 代码如下

 

 

show master status;
 mysql> show master status;
 +------------------+----------+-----------------------+------------------+
 | File             | Position | Binlog_Do_DB          | Binlog_Ignore_DB |
 +------------------+----------+-----------------------+------------------+
 | mysql-bin.000004 |      106 | wordpress,wordpress   | mysql,mysql      |
 +------------------+----------+--------------+---------------------------+

 
查看完状态就不要进行任何操作了,防止状态产生变化
 
6、登录从服务器配置

 


 代码如下

 

 

mysql> CHANGE MASTER TO
     -> MASTER_HOST = '主服务器地址',
     -> MASTER_USER ='刚才新建的帐号',
     -> MASTER_PASSWORD='新建的用户密码',
     -> MASTER_PORT=3306,
     -> MASTER_LOG_FILE='mysql-bin.000003',
     -> MASTER_LOG_POS=106;

 
7、开启从服务器的复制功能

 


 代码如下

 

 

START SLAVE

 
8、查看从服务器的状态

 


 代码如下

 

 


mysql> show slave statusG
 *************************** 1. row ***************************
                Slave_IO_State:
                   Master_Host: 117.34.73.175
                   Master_User: mysqlsync
                   Master_Port: 3306
                 Connect_Retry: 60
               Master_Log_File: mysql-bin.000002
           Read_Master_Log_Pos: 106
                Relay_Log_File: AY140429124852508639Z-relay-bin.000001
                 Relay_Log_Pos: 4
         Relay_Master_Log_File: mysql-bin.000002
              Slave_IO_Running: Yes
             Slave_SQL_Running: Yes
               Replicate_Do_DB:
           Replicate_Ignore_DB:
            Replicate_Do_Table:
        Replicate_Ignore_Table:
       Replicate_Wild_Do_Table:
   Replicate_Wild_Ignore_Table:
                    Last_Errno: 0
                    Last_Error:
                  Skip_Counter: 0
           Exec_Master_Log_Pos: 106
               Relay_Log_Space: 106
               Until_Condition: None
                Until_Log_File:
                 Until_Log_Pos: 0
            Master_SSL_Allowed: No
            Master_SSL_CA_File:
            Master_SSL_CA_Path:
               Master_SSL_Cert:
             Master_SSL_Cipher:
                Master_SSL_Key:
         Seconds_Behind_Master: NULL
 Master_SSL_Verify_Server_Cert: No
                 Last_IO_Errno: 0
                 Last_IO_Error:
                Last_SQL_Errno: 0
                Last_SQL_Error:
 1 row in set (0.00 sec)
这里需要注意的

Slave_IO_Running = Yes
 Slave_SQL_Running = Yes

 

这两个值必须为Yes,如果某一个为No就说说明主从是有问题的
 如果会shell或python的话可以写一个检测脚本,检测这两个值是否都为Yes,如果有一个为No那就说明主从出现问题发邮件报警吧!
 
如果其中一个为yes的话你就需要检查一下了,我在操作的过程遇到了Slave_IO_Running为No了,这个时候你看一下 Last_IO_Error这里提示:error connecting to master ‘sync@218.244.**.**:3306′ – retry-time: 60  retries: 86400 (PS:**为打码),这里提示又无法连接到服务器,一般来说可能是帐号密码设置错误,或者服务器的防火墙给拦截了,经过检查阿里云开云盾开放了 3306,但是没有还是不能,这个时候在从服务器直接登录,发现是空间商的问题,本地是可以的但是从服务器是没有办法登录。
 
9、这个时候你就可以在主服务器进行建表插入数据等等操作,看看从服务器是否已经同步了
 
可能在敲命令的时候敲错了一些东西,可以使用下边的sql语句进行修改

 


 代码如下

 

 


CHANGE MASTER TO MASTER_HOST='218.244.136.92'; //从服务器执行,意思是:修改主服务器的地址,底下意思相同
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000003'MASTER_LOG_POS=106;

 

在执行的时候需要先停止从服务器的同步,
 
停止同步

 


 代码如下

 

 


SLAVE STOP

修改完成之后记得开启
SLAVE START

相关文章
关于网站 | 网站声明 | 用户反馈 | 合作伙伴 | 联系站长 | 全讯网|
友情链接:狗狗网 |对联网| 微信下载手机版 | 阳谷信息港 | 电脑医生网 | 生物诊断网 | 麦词网 | 如皋信息网 | 足球比分 | 护士网 | 第一英语 | 四川大学论坛| 中南民族大学论坛| 华科论坛 |西邮论坛 |东北师范大学论坛 | 北理bbs|首经贸论坛 |安徽机电学生论坛 | 电子科技大学论坛|浙江师范大学 | 上海师范大学论坛 | 山东大学论坛 | 天津大学论坛
Copyright © 2011 www.dndoctor.net 版权所有
蜀ICP(备)1101113