您的位置:首页 > 数据库 > MySQL

mysql 主从复制部署

2016-10-09 09:40 267 查看
数据库环境准备:

1)具备单机单数据库多实例的环境

2)或两台服务器,每个机器一个数据库的环境

1.安装mysql,并启用bin-log

2.建立用于从库复制的账号rep

//////////////////////////////////////////

grant replication slave on *.* to 'rep'@'192.168.56.%' identified by 'mysql';

flush privileges;

//////////////////////////////////////////

# replication slave 为mysql同步的必须权限,此处不要授权all;

# *.* 表示所有库的所有表,你也可以指定的库和表进行复制

3.锁表(当前窗口不要关掉);

/////////////////

flush table with read lock

/////////////////

--这个命令是全局读锁定,执行了命令之后所有库所有表都被锁定只读。
--这时候写操作将被阻塞,读操作顺利进行。
--解锁:unlock tables;
提示:这个锁表命令的时间,在不同的引擎的情况,会受下面参数的控制,锁表时,
如果超过设置时间不操作会自动解锁
interactive_timeout=60
wait_timeout=60

默认情况下时长为:
show variables like '%timeout%';

4.备份数据

///////////////////////////////

mysqldump -uroot -proot -S /data/mysqldb/mysql.sock -A -B -R --events|gzip >/soft/rep.sql.gz

mysqldump -uroot -proot -S /data/mysqldb/mysql.sock -A -B -R --events --master-data=2 >/soft/rep.sql

/////////////////////////////

#注 -A 表示备份所有库 -B 表示增加use DB 和 drop等(导库时会直接覆盖原有的)

为了确保导库期间,数据库没有数据插入,可以再查下主库状态信息

mysql -uroot -proot -S /data/mysqldb/mysql.sock -e "show master status"

无特殊情况,binlog文件及位置点是保持不变的

show master status;

show master logs;

导库后,解锁主库,恢复可写:

//////////////////

unlock tables;

//////////////////

5.把主库导出的数据迁移到从库

mysql -uroot -proot -S /data/mysqldb/mysql.sock </soft/rep.sql

mysql自动批量制作主从同步需要的语句。

mysql -uroot -proot -S /data/mysqldb/mysql.sock<<EOF

change master to 

master_host='192.168.56.20',

master_port=3306,

master_user='rep',

master_password='mysql',

master_log_file='mysql-bin.000001',

master_log_pos=628;

EOF

6.从库启动同步

start slave;

show slave status \G
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: