现在的位置: 首页 > 综合 > 正文

mysql 主从服务器

2014年09月24日 ⁄ 综合 ⁄ 共 2635字 ⁄ 字号 评论关闭

第一步: 

1.1 环境搭建 
准备两台Windows NT 主机,分别安装好iKEY Server windows 版本,确定版本无误,确保mysql服务正常启动,确保两台主机处于同一个局域网中,确定好哪台做为主、备机器,假设A为主机,B为备机,假设A主机IP地址为:192.168.1.101,B主机IP地址为192.168.1.102 

第一步:

在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.102 #主机B的地址 
master-user=use102 #主机B提供应B的用户,该用户中需要包括数据库test1 test12test3的权限
master-password=usepwd102 #访问密码 
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.101 #主机A的地址 
master-user=use101 #主机A提供给A的用户,该用户中需要包括数据库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 'use101'@'192.168.0.102'IDENTIFIEDBY 'pwd101'; 
将B的Mysql数据的权限给B操作同上。 
第四步: 
重启AB数据库,后: 
B机器: 
mysql>slave start; 
查看同步配置情况 
A机器: 
mysql>show master status\G; 
B机器: 
mysql>show slave status\G; 
Slave_SQL_Running NO 的解决方案。

mysql 备机跳过执行一条语句:set global sql_slave_skip_counter=1
1可以为N.
用来跳过备机的一条或N条出错的复制语句。然后重新start slave即可。  
查看Slave状态:
mysql> show master status;
+------------------+-----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+-----------+--------------+------------------+
| mysql-bin.000020 | 135617781 | | |
+------------------+-----------+--------------+------------------+
1 row in set (0.00 sec)
 
mysql> slave stop;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> slave start;
 
 
二、2010-01-04
1.问题:收到报警,从数据库在同步的过程出现问题,已停止同步。
分析:查看从数据库的错误日志,找到如下信息:
091229 11:49:41 [ERROR] Error reading packet from server: Got packet bigger than 'max_allowed_packet' bytes ( server_errno=2020)
解决办法:1.增加/etc/my.cnf 中的max_allowed_packet,增加他的大小,我修改为10M,然后,重启服务器。
2.为了不影响业务,直接在数据库里面,修改max_allowed_packet的大小
mysql>set GLOBAL max_allowed_packet=10475520; (注意不能直接写成10M)
mysql>change master to master_host='192.168.1.203',master_user='yang',  master_password='yang',  master_port=3306, master_log_file='mysql-bin.000018',master_log_pos=395332157;
(注:master_log,master_log_pos的值要设置成停止同步的那个位置,不然会造成,数据不一致)
mysql>slave start;
3.在同步过程中,又出现了一个错误:
[ERROR] Slave: Error 'Duplicate entry '18923' for key 1' on query.
解决方法:1.查找主数据库对应位置的操作记录
#/opt/mysql/bin/mysqlbinlog ../log/bin.000009 --start-position=100 --stop-position=110

(分析binlog 日志)
#在从数据库删除重复记录,然后,在change master,OK,问题解决了。 

抱歉!评论已关闭.