|||
最近做mysql的主从服务器(master-slave)复制,折腾了半天才搞定,记录一下完整的过程;就用局域网数据替代我的操作,比如:slaveip为从服务器ip,192.168.2.3;masterip为主服务器ip,192.168.2.2。
1、设置主服务器
a)my.cnf或my.ini的[mysqld]添加
log-bin=mysql-bin
server-id =1 #主服务器ID,从服务器不能相同
binlog-do-db=dbname#计划备份的数据库,不设置的话备份binlog-ignore-db以外所有数据库,包括创建数据库
binlog-ignore-db=mysql,test,information_schema
b)添加复制用户repluser,密码passwd,授权该用户可复制权限
mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repluser'@'slaveip' IDENTIFIED BY 'passwd';
mysql>FLUSH PRIVILEGES;
其中,slaveip为从服务器ip,比如192.168.2.3
2、设置从服务器
my.cnf或my.ini的[mysqld]段添加
server-id = 2
master-host = slaveip
master-user = repluser
master-password = passwd
master-port = 3306
log-bin=mysql-bin
master-connect-retry=60
replicate-do-db=dname
log-slave-updates
read-only=1#可设定只读
3、主服务器锁表
mysql> FLUSH TABLES WITH READ LOCK;
注意,锁定后数据库只读,因此最好在数据库非访问期间做此操作
4、主服务器导出数据库
mysqldump -uroot -ppasswd dbname>dbname.sql
5、从服务器导入数据
mysql -uroot -ppasswd dbname< dbname.sql
6、查看并记录主服务器状态
mysql> show master status;
记下File和Position,后面用到,比如:
File:mysql-bin.000003,Position:15386161;
7、从服务器设置复制点
mysql > stop slave;
代入前面(第5步)的file和position
mysql > change master to master_host='masterip', master_user='repluser', master_password='passwd', master_log_file='mysql-bin.000003', master_log_pos=15386161;
mysql > start slave;
其中,masterip为主服务器ip,比如192.168.2.2
8、检查slave状态
mysql >show slave statusG;
Slave_IO_Running和Slave_SQL_Running均为Yes说明配置成功。
9、恢复主服务器锁表
mysql >unlock tables;
10、测试复制同步情况
互为主从的操作也类似;参加:
http://hxl2009.blog.51cto.com/779549/354492
============================= 关于博主 =============================
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-23 13:00
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社