最近做mysql的主从服务器(master-slave)复制,折腾了半天才搞定,记录一下完整的过程;
就用局域网数据替代我的操作,比如:slaveip为从服务器ip,192.168.2.3;masterip为主服务器ip,192.168.2.2。
1、设置主服务器
修改安装目录下的 my.ini 配置文件
log-bin=mysql-bin # 主库日志文件前缀 server-id =1 #主服务器ID,从服务器不能相同 binlog-do-db=test # 计划同步的数据库
添加同步用户repluser,密码passwd,授权该用户可复制权限
# 创建并分配用户"同步"的权限 GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repluser'@'slaveip' IDENTIFIED BY 'passwd'; # 刷新 FLUSH PRIVILEGES; PS: slaveip为从服务器ip,比如192.168.2.3
2、设置从服务器
修改安装目录下的 my.ini 文件, 并加入相应的配置参数
# 服务器ID server_id=2 # 需要同步的库 replicate-do-db=test # 从库同步日志文件 relay-log-index=slave-relay-bin.index relay-log=slave-relay-bin # 超时时间 master-connect-retry=60
3、主库锁表, 导出数据库, 然后再从库导入同等的数据
# 主库锁表 FLUSH TABLES WITH READ LOCK; # 锁定后数据库只读,因此最好在数据库非访问期间做此操作 # 主库导出数据(可用工具进行) mysqldump -uroot -ppasswd dbname>dbname.sql # 从库导入数据 mysql -uroot -ppasswd dbname< dbname.sql # 查看并记录主库状态, 记下File和Position show master status;
1. 从库开始
# 在从库设置复制点 stop slave; # 先停止同步线程 CHANGE MASTER TO MASTER_HOST='主服务器IP地址', MASTER_USER='复制用户名', MASTER_PASSWORD='密码', MASTER_PORT=3306, MASTER_LOG_FILE='主服务器二进制日志文件名', MASTER_LOG_POS=日志位置, MASTER_CONNECT_RETRY=10; start slave; # 启动同步线程 show slave status G; # 检查同步状态
2. 然后, 最后一步
# 最后一步 # 在主库恢复锁表 unlock tables;
再再然后开始验证数据, 在主库插入一条数据, 正常的情况下, 从库就会同步.
本文为宁若水!原创文章,转载无需和我联系,但请注明来自[若水]博客 www.lalaya.net