superzgc 发表于 2010-01-21 15:13

mysql 主从同步设置


1、停止主mysql的服务,将需要同步的数据库导入到从mysql中,
2、在主mysql中,设置一个同步用的账户slave
Mysql>grant replication slave on *.* to slave@”%” identified by “123456”;
Mysql>flush privileges;   # 更新权限
3、在从mysql的配置文件my.cnf中,修改
server-id       = 2
master-host=192.168.1.34
master-user=slave
master-password=123456
replicate-do-db=aaa      #需要同步的数据库名
replicate-do-db=bbb      
replicate-do-db=ccc
slave-skip-errors=all
log-bin=mysql-bin       #此设置一般都开启,同时检查主mysql中此项是否开启
4、重启主、从mysql服务
5、在从mysql中检测从服务器状态
Mysql>show slave status\G;
正常的结果应该是:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
注意:如遇到某些库不能更新的情况,可以删除从/mysql/var/下的master.Info和relay-log.info

主从同步问题解决
今天检查数据库发现一台MySQL Slave未和主机同步,查看Slave状态:
mysql> show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: No
Seconds_Behind_Master:NULL
原因:
1.程序可能在slave上进行了写操作
2.也可能是slave机器重起后,事务回滚造成的.

解决办法I:
1.首先停掉Slave服务:slave stop
到主服务器上查看主机状态:
记录File和Position对应的值。
mysql> show master status;
+------------------+-----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+-----------+--------------+------------------+
| mysql-bin.000020 | 135617781 | | |
+------------------+-----------+--------------+------------------+
1 row in set (0.00 sec)

3.到slave服务器上执行手动同步:
mysql> change master to
> master_host='master_ip',
> master_user='user',
> master_password='pwd',
> master_port=3307,
> master_log_file='mysql-bin.000020',
> master_log_pos=135617781;
1 row in set (0.00 sec)
mysql> slave start;
1 row in set (0.00 sec)

再次查看slave状态发现:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
...
Seconds_Behind_Master: 0
解决办法II:
mysql> slave stop;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> slave start;


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/110700/showart_2156226.html
页: [1]
查看完整版本: mysql 主从同步设置