Posted by zuzhihui in vps技术 on 2009/09/26 with No Comments
MySQL的Replication功能可以自动同步主MySQL服务器的更新到若干个辅MySQL服务器上,这个功能能把MySQL的数据实时分布到多台机器上,提交了MySQL的数据安全性。
配置MySQL Replication并不是个简单的工作,如果配置的不好,回导致MySQL的同步性能不好,或者不能同步,甚至导致主辅服务器的数据不一致。
下面主服务器为master,辅助服务器为slave
第一步保证master能单机正常工作,略。
在master上创建一个MySQL用户,这个用户专门用于Replication:
grant replication slave on *.* to 'repluser'@'%' identified by 'mypassword';
编辑MySQL的配置文件,允许log-bin,并且给master分配一个ID:
[mysqld] skip-name-resolve server-id=10 log-bin=mysql-bin sync_binlog=1 innodb_flush_logs_at_trx_commit=1 innodb_support_xa=1
配置ID等
[mysqld] server-id=20 log_bin = mysql-bin relay_log = mysql-relay-bin skip_slave_start log_slave_updates = 1 read_only skip-name-resolve
在master上把数据导出,并记录当前数据位置。用一个用户连接mysql并运行:
flush tables with read lock;
show master status;
然后该连接不要退出,否则read lock就失效了,记录下当前日志的文件名和位置。在另外一个窗口运行如下命令导出数据:
mysqldump -uroot -p --all-databases |gzip -c > db.sql.gz
然后把数据文件拷贝到slave上,解压缩:
gunzip db.sql.gz
进MySQL导入:
source db.sql;
这时候slave上的数据已经同步到master的导出时刻的数据了,下面就启动自动同步的线程就可以了:
change master to master_host='1.1.1.1', master_user='repluser', aster_password='mypassword',master_log_file='mysql-bin.000006',master_log_pos=502185;
show slave status;
start slave;
show slave status;
从上面的
show slave status命令的输出可以看到,
IO线程和SQL线程都开始工作了。过几分钟后比较一下slave和master上的日志文件及其位置,应该就是一样的了。
要发表评论,您必须先登录。
glalcoxyneole on 2012/09/27 ·
bxdnxif celebrity sex rcfftpx