mysql主从同步镜像备份镜像备份
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
windows 2008R2 SERVER下mysql主从同步备份(mysql镜像)
windows下mysql主从同步数据备份实现方法,对于数据的安全性是很有必要的。
一般情况下,如果条件允许的话可以使用三台服务器:主服务器、见证服务器、从服务器(见证服务器的作用即是实现故障自动转移使得系统正常运行的主动切换作用)。
但是笔者这里只有两台服务器,因此只能做主从服务器,见证服务器可以省略了,在主服务器出现问题影响系统正常使用时及时的进行手动的切换。
下面说说具体的配置步骤。
环境:两台windows 2008R2 server服务器,网络正常并且已经开通相关端口。
主服务器IP:192.168.0.109 A
镜像服务器IP:192.168.0.112 B
mysql版本:5.0.22
第一步:
在A数据库的 my.ini中添加
server-id=1
log- bin=C:\mysqlback #同步事件的日志记录文件
binlog-do-db=test1 #提供数据同步服务的数据库
binlog-do-db=test2 #提供数据同步服务的数据库
binlog-do-db=test3 #提供数据同步服务的数据库
master-host=192.168.0.112 #主机B的地址
master-user=root #主机B提供给A的用户(数据库的用户),该用户中需要包括数据库test1 test12test3的权限
master-password=123456 #访问密码
master-port=3306 #端口,主机的MYSQL端口
master-connect-retry=60 #重试间隔60秒
replicate-do-db=test1 #同步的数据库
replicate-do-db=test2 #同步的数据库
replicate-do-db=test3 #同步的数据库
第二步:
在B数据库的my.ini中添加
server-id=2
log- bin=C:\mysqlback #同步事件的日志记录文件
binlog-do-db=test1 #提供数据同步服务的数据库
binlog-do-db=test2 #提供数据同步服务的数据库
binlog-do-db=test3 #提供数据同步服务的数据库
master-host=192.168.0.109 #主机B的地址
master-user=use101 #主机A提供给B的用户,该用户中需要包括数据库test1 test12test3的权限
master-password=usepwd101 #访问密码
master-port=3306 #端口,主机的MYSQL端口
master-connect-retry=60 #重试间隔60秒
replicate-do-db=test1 #同步的数据库
replicate-do-db=test2 #同步的数据库
replicate-do-db=test3 #同步的数据库
第三步:
将A的mysql数据的权限给B
mysql>GRANT FILE ON *.* TO "root"@"192.168.0.112"IDENTIFIED BY 'abc123-=';
mysql>flush privileges;
mysql>GRANT REPLICATION SLAVE ON *.* TO "root"@"192.168.0.112" IDENTIFIED BY 'abc123-=';
mysql>flush privileges;
将B的Mysql数据的权限给A操作同上。
第四步:
在从服务器上面输入:mysql>show slave status;
如果为empty set,则在从服务器上面:mysql> CHANGE MASTER TO
MASTER_HOST='192.168.0.109', MASTER_USER='root', MASTER_PASSWORD='abc123-=';
重启AB数据库,后:
B机器:
mysql>slave start;
查看同步配置情况
A 机器:
mysql>show master status;
B机器:
mysql>show slave status;
假如A与B数据库没有同步,检查mysql安装目录下的.err文件。
如果slave日志中报错信息如下:
060807 11:40:17 [ERROR] While trying to obtain the list of slaves from the master 'xxx.xxx.xxx:3306' user 'root' got the following error: 'Access denied. You need the REPLICATION SLAVE privilegefor this operation'在master上,执行以下语句查看权限:
mysql>SHOW GRANTS FOR 'root'@'192.168.0.112' ; *************************** 1. row *************************** Grants for rep@192.168.0.102: GRANT Select REPLICATION SLAVE ON *.* TO 'rep'@'192.168.0.102'IDENTIFIED BY PASSWORD 'xxx'已经授予了REPLICAION SLAVE 权限了,怎么还会报这个错呢?
通过查看手册和源码,才知道slave需要执行一个语句来更新slave列表:
SHOW SLAVE HOSTS;而执行这个语句则需要 REPLICAITON CLIENT 权限,因此才会报错。
因此,只要重新给帐号加上 REPLICATION CLIENT 权限就可以了。
GRANT REPLICATION SLAVE ,REPLICATION CLIENT ON *.* TO 'root' IDENTIFIED BY
'123456';
在主服务器上面:mysql>GRANT REPLICATION SLAVE ON *.* TO
"root"@’192.168.0.112‘ IDENTIFIED BY "abc123-=";
然后在主服务器上面输入:mysql>show master status;
可以看到file和position。
常见错误:
1、
[ERROR] Slave: Error 'Table 't_test' already exists' on query. Default database: 'test'. Query:
'create table t_test(
username varchar(20) default "哈哈"
可参考:/content/13/0624/14/10384031_295169469.shtml
2、070806 2:19:12 [ERROR] While trying to obtain the list of slaves from the master '10.1.3.106:3306', user 'repl' got the foll
owing error: 'Access denied; you need the REPLICATION SLAVE privilege for this operation'
070806 2:19:12 [ERROR] Slave I/O thread exiting, read up to log
'ifi-db01-bin.000019', position 4540467
可参考:/13184/37303/
成功:在从服务器上面输入:mysql>show slave status;
+----------------------------------+---------------+-------------+-------------+---------------+------------------+---------------------+----------------------------------+---------------+-----------------------+------------------+------
--------------------+-------------------------+-----------------------------+--
----------+------------+--------------+---------------------+-----------------+
-----------------+----------------+---------------+--------------------+-------
-------------+--------------------+-----------------+-------------------+------
----------+-----------------------+
| Slave_IO_State | Master_Host | Master_User | Master_Port |
Connect_Retry | Master_Log_File | Read_Master_Log_Pos | Relay_Log_File
| Relay_Log_Pos | Relay_Master_Log_File | Slave_IO_Running | Slave_SQL_Running |
Replicate_Do_DB | Replicate_Ignore_DB | Replicate_Do_Table |
Replicate_Ignore_Table | Replicate_Wild_Do_Table | Replicate_Wild_Ignore_Table |
Last_Errno | Last_Error | Skip_Counter | Exec_Master_Log_Pos | Relay_Log_Space |
Until_Condition | Until_Log_File | Until_Log_Pos | Master_SSL_Allowed |
Master_SSL_CA_File | Master_SSL_CA_Path | Master_SSL_Cert | Master_SSL_Cipher |
Master_SSL_Key | Seconds_Behind_Master |
+----------------------------------+---------------+-------------+-------------
+---------------+------------------+---------------------+---------------------
-------------+---------------+-----------------------+------------------+------
-------------+-----------------+---------------------+--------------------+----
--------------------+-------------------------+-----------------------------+--
----------+------------+--------------+---------------------+-----------------+
-----------------+----------------+---------------+--------------------+-------
-------------+--------------------+-----------------+-------------------+------
----------+-----------------------+
| Waiting for master to send event | 192.168.0.109 | root | 3306 |
60 | mysql-bin.000005 | 59807 | WIN-TCEUE37P54J-relay-bin.000009 |
59048 | mysql-bin.000005 | Yes | Yes |
| | | | | | 0 | | 0 |
59807 | 59048 | None | | 0 | No | | | |
| | 0 |
+----------------------------------+---------------+-------------+-------------
+---------------+------------------+---------------------+---------------------
-------------+-----------------+---------------------+--------------------+------------------------+-------------------------+-----------------------------+------------+------------+--------------+---------------------+-----------------+ -----------------+----------------+---------------+--------------------+--------------------+--------------------+-----------------+-------------------+----------------+-----------------------+
1 row in set
当SlaveSlave_IO_Running 和 Slave_SQL_Running 都为 Yes时,基本已经配置成功。
可以尝试从master数据库进行表的操作,看看slave数据库是否也进行了同步更改。
如果未同步,查看日志.err文档里面的报错信息,是权限没给够或者是网络不通等问题,可以通过网络上面的方法进行赋权等操作。
参考文档:/html/1/1-220.html
/uid-24426415-id-77316.html。