三度网教程:是一个免费提供流行视频软件教程、在线学习分享的学习平台!

mysql_2台服务器完成双机互备设置并测试数据同步

时间:2022-7-3作者:未知来源:三度网教程人气:


SQL是Structured Query Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。SQL功能强大、简单易学、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持SQL。
对于实现两台机子的互备配置,本文作出了详细的介绍,之后的测试数据同步,在10.168.1.44服务器数据库里修改一条数据, 可以看到数据已经同步过来了。反过来,修改10.168.0.126的数据,也可以看到10.168.1.44数据库中对应表数据改变。到此,10.168.0.126与10.168.1.44互为主从数据库关系。apache php mysql

前期准备

两台服务器:10.168.1.44

10.168.0.126

运行环境:Linux系统(Centos6.5)

Mysql版本:5.7.22

修改配置

在两台服务器上分别修改/etc/my.conf配置文件的信息如下:

在10.168.1.44服务器/etc/my.conf配置文件中添加:

server_id=10

log-bin=master_01 //开启二进制日志,作用是另一个服务器可以通过该日志来确定执行操作

binlog-do-db=test_db //同步的表

binlog-do-db=my_test //同步的表

在10.168.0.126服务器/etc/my.conf配置文件中添加:

server_id=20

log-bin=master_02 //开启二进制日志,作用是另一个服务器可以通过该日志来确定执行操作

binlog-do-db=test_db //同步的表

binlog-do-db=my_test //同步的表

添加之后执行命令 service mysqld restart 重启数据库使修改生效

添加mysql账户

添加mysql账户,通过给其授权用户执行数据同步

10.168.1.44执行命令:

GRANT FILE ON *.* TO 'copyuser'@'10.168.0.126' IDENTIFIED BY 'Admin@123'; GRANT REPLICATION SLAVE ON *.* TO 'copyuser'@'10.168.0.126' IDENTIFIED BY 'Admin@123'; flush privileges;

10.168.0.126执行命令:

GRANT FILE ON *.* TO 'copyuser'@'10.168.1.44' IDENTIFIED BY 'Admin@123'; GRANT REPLICATION SLAVE ON *.* TO 'copyuser'@'10.168.1.44' IDENTIFIED BY 'Admin@123'; flush privileges;

配置从数据库

10.168.1.44配置:

查看当前主数据库状态:

mysql> show master status;

记录当前的file与position的值;

进入10.168.0.126访问数据库查看其主数据库状态

在10.168.1.44执行

mysql>CHANGE MASTER TO MASTER_HOST='10.168.0.126', MASTER_USER='copyuser', MASTER_PASSWORD='Admin@123', MASTER_PORT=3306, MASTER_LOG_FILE='master_02.000002', MASTER_LOG_POS=1771, MASTER_CONNECT_RETRY=10; 在10.168.0.126执行: mysql>CHANGE MASTER TO MASTER_HOST='10.168.1.44', MASTER_USER='copyuser', MASTER_PASSWORD='Admin@123', MASTER_PORT=3306, MASTER_LOG_FILE='master_01.000008', MASTER_LOG_POS=154, MASTER_CONNECT_RETRY=10; 注:若slave开启状态无法执行以上命令,需要首先执行 stop slave;关闭slave,执行完上述命令后执行start slave;命令开启slave。 上述命令执行完后,查看从服务状态: 执行命令: mysql> show slave status\G; *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 10.168.1.44 Master_User: copyuser Master_Port: 3306 Connect_Retry: 10 Master_Log_File: master_01.000008 Read_Master_Log_Pos: 154 Relay_Log_File: cdh-2-relay-bin.000004 Relay_Log_Pos: 367 Relay_Master_Log_File: master_01.000008 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: 154 Relay_Log_Space: 740 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: 0 Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 10 Master_UUID: 778beb1e-8f0f-11e8-a815-00505695cd8c Master_Info_File: /var/lib/mysql/master.info SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates Master_Retry_Count: 86400 Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0 Replicate_Rewrite_DB: Channel_Name: Master_TLS_Version: 1 row in set (0.00 sec)

注意Slave_IO_Running: Yes与Slave_SQL_Running: Yes,只有当两个都为yes是才是配置成功。

测试数据同步

在10.168.1.44服务器数据库里修改一条数据:

修改前:

1.png

修改后:

1.jpg

查看10.168.0.126数据库中对应表中数据:

1.png

可以看到已经同步过来了。

反过来,修改10.168.0.126的数据,也可以看到10.168.1.44数据库中对应表数据改变。

到此,10.168.0.126与10.168.1.44互为主从数据库关系

可能存在问题

  1. 查看slave状态时,会发现Slave_IO_Running: Connecting

出现该问题主要有三个原因:

  1. 网络不通(互相ping下试试看能否ping通)

  2. 密码不对:查看在配置slave时执行的命令中的密码是否正确

  3. Position不正确:配置slave时对应position未填为正确的position(查看对应从服务器数据库的master状态:show master status即可找到 )

我出现这个问题的原因是只在一个服务器上创建了用于同步数据的用户‘copyuser’,另一个服务器数据库中并未创建该用户。创建之后OK了

4.查看slave状态时,会发现Slave_SQL_Running: No

出现这个现象的原因主要就是两边数据库数据存在不同之处,可以通过查看mysql日志定位具体哪块数据出现异常

Mysql日志一般在/var/log/mysqld.log

需要注意的是,如果你只配置了从数据库同步主数据库数据,而未设置为互相同步 ,修改从数据库数据可能会导致同步失效。

相关文章:

Mysql 数据库双机热备的配置_MySQL

Mysql的实时同步-双机互备(双master)

相关视频:

MySQL数据管理之备份恢复案例解析视频教程

以上就是mysql_两台服务器实现双机互备配置并测试数据同步的详细内容,更多请关注php中文网其它相关文章!


学习教程快速掌握从入门到精通的SQL知识。

关键词:  mysql_2台服务器完成双机互备设置并测试数据同步





Copyright © 2012-2018 三度网教程(http://www.3du8.cn) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版