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服务器数据库里修改一条数据: 修改前: 修改后: 查看10.168.0.126数据库中对应表中数据: 可以看到已经同步过来了。 反过来,修改10.168.0.126的数据,也可以看到10.168.1.44数据库中对应表数据改变。 到此,10.168.0.126与10.168.1.44互为主从数据库关系 可能存在问题 查看slave状态时,会发现Slave_IO_Running: Connecting
出现该问题主要有三个原因: 网络不通(互相ping下试试看能否ping通) 密码不对:查看在配置slave时执行的命令中的密码是否正确 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知识。
|