日期:2014-05-16  浏览次数:20458 次

同机MySQL数据库主从同步配置方案
1、配置主库my.ini                     

port=3306

datadir=”C:/Program Files/MySQL/MySQL Server 5.0/Data/”

server-id=1

log-bin=mysql-bin
(注:一定要启用logbin功能才能进行同步备份。如果只想对某个数据库或者某个数据库的某些表做同步,那么还需要增加binlog-do-db参数进行限制,格式:binlog-do-db = dbname)


2、配置从库my.ini

port=3307

注意:主从的datadir目录不能一样(各自的log文件在各自的data目录下)
datadir=”D:/Program Files/MySQL/MySQL Server 5.0/Data/”

server-id=2

#启用从库日志,这样可以进行链式复制

log-slave-updates

#从库是否只读,0表示可读写,1表示只读(可选项)

read-only=1

#只复制某个表(如果只想对某个数据库或者某个数据库的某些表做同步,需要选择这项)

replicate-do-table=dbname.tablename

#只复制某些表(可用匹配符。功能同上参数。)

replicate-wild-do-table=dbname.tablename%

#只复制某个库(如果对多个数据库做同步,那么可以用多行来表示。)

replicate-do-db = dbname

#只复制某些库(可用匹配符。)

replicte-wild-do-db=dbname%

#不复制某个表

replicate-ignore-table=dbname.tablename

#不复制某些表

replicate-wild-ignore-table=dbname.tablename%

#不复制某个库(如果忽略多个数据库的同步,那么可以用多行表示。)

replicate-ignore-db=mysql

#复制完的sql语句是否立即从中继日志中清除,1表示立即清除(可选项)

relay-log-purge = 1
3、设置主库                           武汉百度推广

连接到主库中,创建复制用户

C:\>mysql -uroot -ppassword -P3306

mysql> grant replication slave on *.* to ‘backup’@'localhost’ identified by ‘123456′;

Query OK, 0 rows affected (0.00 sec)
锁住主库的table,以便备份数据文件到从库进行初始化

mysql> flush tables with read lock;

Query OK, 0 rows affected (0.00 sec)

显示主库状态,注意记下当前二进制日志文件名和position

mysql> show master status;

+———————–+———–+——————-+————————+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+———————-+————+——————-+————————+

| mysql-bin.000001 |      98 | backup      |    mysql        |

+———————-+————+——————-+————————–+

1 row in set (0.00 sec)
4、设置从库

另外开启一个cmd,启动从库

连接到从库进行配置

C:\>mysql -uroot -ppassword -P3307

mysql> CHANGE MASTER TO

    -> MASTER_HOST=’localhost’,

    -> MASTER_USER=’backup’,

    -> MASTER_PASSWORD=’backup’,

    -> MASTER_LOG_FILE=’mysql-bin.000001′,

    -> MASTER_LOG_POS=98;

Query OK, 0 rows affected (0.01 sec)

注意到这里master_log_file和master_log_pos就是前面show master status的结果。

启动复制进程

mysql> start slave;

Query OK, 0 rows affected (0.00 sec)

至此配置基本完成,在主库解开table的锁定

mysql> unlock tables;

Query OK, 0 rows affected (0.00 sec)

最后在从服务器中执行如下操作:
mysql>show slave status \G;
如果下面三项显示为这样,则表示已经启动正常。
Slave_IO_State: Waiting for master to send event
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

建议:在同步之前,2台Mysql的数据库 数据要一致,就是先把要备份的数据库导入到从slave服务器上。这样可以避免同步出错。

转载自:http://hi.baidu.com/codylee/blog/item/b16acdfc197b4588b901a0a7.html