北京SEO

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

2019/10/10/17:37:34  阅读:1822  来源:谷歌SEO算法  标签: Safari浏览器

mysql主从配置对于我来讲不是很难事,但是对于很多的新手朋友来讲是非常困难的一件事件了,下面我来给大家介绍一篇完整的mysql主从配置方法,希望例子能给你带来帮助.

mysql主从分两个角色

1、主服务器 master

2、从服务器 slave

mysql主从复制就是两个服务器之间数据库的同步,也可以理解成对主服务器的一个备份,当主服务器的数据进行了变更,那么从服务器也会自动更新,其实是通过bin-log日志实现的,也就说他们中间是传输binlog日志的,这样我们就可以对数据进行多个节点进行冗余从而保证可用性.

公司现在有三台服务器,一台阿里云,两台VPS,现在需要把阿里云上的数据库同步到其他两台VPS上,阿里云做主服务器其他两台服务器做从服务器.

操作如下:

1、在阿里云服务器中修改my.cnf文件(一般在/etc/my.cnf),代码如下:

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

2、来到从服务修改my.cnf,代码如下:

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

3、重启这两台服务器的mysql,第二台从服务器和第一台一样,这里就只写第一个的配置了.

4、登录主服务器为从服务器授权,代码如下:

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

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

5、查看主服务器的状态,代码如下:

  1. showmasterstatus;
  2. mysql>showmasterstatus;
  3. +------------------+----------+-----------------------+------------------+
  4. |File|Position|Binlog_Do_DB|Binlog_Ignore_DB|
  5. +------------------+----------+-----------------------+------------------+
  6. |mysql-bin.000004|106|wordpress,wordpress|mysql,mysql|
  7. +------------------+----------+--------------+---------------------------+

查看完状态就不要进行任何操作了,防止状态产生变化.

6、登录从服务器配置,代码如下:

  1. mysql>CHANGEMASTERTO
  2. ->MASTER_HOST='主服务器地址',
  3. ->MASTER_USER='刚才新建的帐号',
  4. ->MASTER_PASSWORD='新建的用户密码',
  5. ->MASTER_PORT=3306,
  6. ->MASTER_LOG_FILE='mysql-bin.000003',
  7. ->MASTER_LOG_POS=106;

7、开启从服务器的复制功能,代码如下:START SLAVE

8、查看从服务器的状态,代码如下:

  1. mysql>showslavestatusG
  2. ***************************1.row***************************
  3. Slave_IO_State:
  4. Master_Host:117.34.73.175
  5. Master_User:mysqlsync
  6. Master_Port:3306
  7. Connect_Retry:60
  8. Master_Log_File:mysql-bin.000002
  9. Read_Master_Log_Pos:106
  10. Relay_Log_File:AY140429124852508639Z-relay-bin.000001
  11. Relay_Log_Pos:4
  12. Relay_Master_Log_File:mysql-bin.000002
  13. Slave_IO_Running:Yes
  14. Slave_SQL_Running:Yes
  15. Replicate_Do_DB:
  16. Replicate_Ignore_DB:
  17. Replicate_Do_Table:
  18. Replicate_Ignore_Table:
  19. Replicate_Wild_Do_Table:
  20. Replicate_Wild_Ignore_Table:
  21. Last_Errno:0
  22. Last_Error:
  23. Skip_Counter:0
  24. Exec_Master_Log_Pos:106
  25. Relay_Log_Space:106
  26. Until_Condition:None
  27. Until_Log_File:
  28. Until_Log_Pos:0
  29. Master_SSL_Allowed:No
  30. Master_SSL_CA_File:
  31. Master_SSL_CA_Path:
  32. Master_SSL_Cert:
  33. Master_SSL_Cipher:
  34. Master_SSL_Key:
  35. Seconds_Behind_Master:NULL
  36. Master_SSL_Verify_Server_Cert:No
  37. Last_IO_Errno:0
  38. Last_IO_Error:
  39. Last_SQL_Errno:0
  40. Last_SQL_Error:
  41. 1rowinset(0.00sec)

这里需要注意的:

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

广告内容

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

相关阅读

热门评论

小明SEO博客 小明SEO博客

小明SEO博客,新时代SEO博客

总篇数171

精选文章

RMAN中catalog和nocatalog区别介绍 小技巧:为Linux下的文件分配多个权限 zimbra8.5.1安装第三方签名ssl证书的步骤 解决mysql不能远程连接数据库方法 windows服务器mysql增量备份批处理数据库 mysql中slow query log慢日志查询分析 JavaScript跨域问题总结 Linux下负载均衡软件LVS配置(VS/DR)教程 mysql中权限参数说明 MYSQL(错误1053)无法正常启动

SEO最新算法