****
参?br />
《MySQL 5.1参考手册?/p>
在上一?/span>MySQLM复制配置 已经介绍q几个启动时的复制参?/span>,下面再介l几个常用的启动选项,
(1) log-slave-updates
log-slave-updatesq个参数用来配置从服务器的更新是否写入二q制日志Q这个选项默认是不打开的,但是Q如果这个从服务?/span>B是服务器A的从服务器,同时q作为服务器C的主服务器,那么需要开发这个选项Q这样它的从服务?/span>C才能获得它的二进制日志进行同步操?/span>
(2) master-connect-retry
master-connect-retryq个参数是用来设|在和主服务器连接丢q时候,重试的时间间隔,默认?/span>60U?/span>
(3) read-only
read-only是用来限制普通用户对从数据库的更新操作,以确保从数据库的安全性,不过如果是超U用户依然可以对从数据库q行更新操作
(4) slave-skip-errors
在复制过E中Q由于各U的原因Q从服务器可能会遇到执行BINLOG中的SQL出错的情况,在默认情况下Q服务器会停止复制进E,不再q行同步Q等到用戯行来处理?/span>
Slave-skip-errors的作用就是用来定义复制过E中从服务器可以自动跌的错误号Q当复制q程中遇到定义的错误P可以自动蟩q,直接执行后面?/span>SQL语句?/span>
--slave-skip-errors=[err1,err2,…….|ALL]
但必L意的是,启动q个参数Q如果处理不当,很可能造成M数据库的数据不同步,在应用中需要根据实际情况,如果Ҏ据完整性要求不是很严格Q那么这个选项实可以减轻l护的成?/span>
Mysql的主从复制至是需要两?/span>Mysql的服务,当然Mysql的服务是可以分布在不同的服务器上Q也可以在一台服务器上启动多个服务?/span>
(1)首先保M服务器上?/span>Mysql版本相同
(2)在主服务器上,讄一个从数据库的账户,使用REPLICATION SLAVE赋予权限,?/span>:
mysql> GRANT
REPLICATION SLAVE ON *.* TO 'slave001'@'192.168.0.99' IDENTIFIED BY
'123456';
Query OK, 0 rows affected (0.13 sec)
(3)修改L据库的配|文?/span>my.cnf,开?/span>BINLOGQƈ讄server-id的|修改之后必须重启Mysql服务
[mysqld]
log-bin = /home/mysql/log/mysql-bin.log
server-id=1
(4)之后可以得到L务器当前二进制日志名和偏U量Q这个操作的目的是ؓ了在从数据库启动后,从这个点开始进行数据的恢复
mysql> show master status\G;
*************************** 1. row
***************************
File: mysql-bin.000003
Position: 243
Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.00 sec)
(5)好了Q现在可以停止主数据的的更新操作Qƈ生成L据库的备份,我们可以通过mysqldump到处数据C数据库,当然了,你也可以直接?/span>cp命o数据文件复制到从数据库?/span>
注意在导出数据之前先对主数据库进?/span>READ LOCKQ以保证数据的一致?/span>
mysql> flush tables with read lock;
Query OK, 0 rows affected (0.19 sec)
之后?/span>mysqldump
mysqldump -h127.0.0.1 -p3306 -uroot -p test > /home/chenyz/test.sql
最好在L据库备䆾完毕Q恢复写操作
mysql> unlock tables;
Query OK, 0 rows affected (0.28 sec)
(6)刚才主数据备䆾?/span>test.sql复制C数据库,q行导入
(7)接着修改从数据库?/span>my.cnf,增加server-id参数,指定复制使用的用?/span>,L据库服务器的ip,端口以及开始执行复制日志的文g和位|?/span>
[mysqld]
server-id=2
log_bin = /var/log/mysql/mysql-bin.log
master-host =192.168.1.100
master-user=test
master-pass=123456
master-port =3306
master-connect-retry=60
replicate-do-db =test
(8)在从服务器上,启动slaveq程
mysql> start slave;
(9)在从服务器进?/span>show salve status验证
mysql> SHOW SLAVE STATUS\G
*************************** 1. row
***************************
Slave_IO_State: Waiting for master to send event
Master_Host: localhost
Master_User: root
Master_Port: 3306
Connect_Retry: 3
Master_Log_File: mysql-bin.003
Read_Master_Log_Pos: 79
Relay_Log_File: gbichot-relay-bin.003
Relay_Log_Pos: 548
Relay_Master_Log_File: mysql-bin .003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
(10)好了,现在可以在我们的L务器做一些更新的操作,然后在从服务器查看是否已l更?/span>
----------------------------------------
陈于?
Mail: chenyz@corp.netease.com