MySQL多实例,主从同步(3)—— 主从复制配置

主从复制配置mysql

 

 主库,称为Master 从库称为Slave。sql

 

1. 主库上执行操做数据库

 

(1) 设置server-id 值并开启binlog设置ide

  根据前文MySQL的同步原理,咱们知道复制的关键因素就是binlog日志。spa

执行 vi /data/3306/my.cnf 编辑my.cnf配置文件,按以下两个参数内容修改:命令行

[mysqld]
server-id =1
log-bin=/data/3306/mysql-bin

检查配置后的结果线程

grep -E "server-id|log-bin" /data/3306/my.cnf
log-bin=/data/3306/mysql-bin  
server-id=1

 

(2) 创建用于同步的帐号rep日志

 

mysql -uroot -p'' -S /data/3306/mysql.sock
grant replication slave on *.* to 'rep'@'10.0.0.%' identified by 'password';

 

(3) 锁表只读(当前窗口不要关闭)server

生产环境时,操做主从复制,须要申请停机事件,锁表会影响业务。事件

flush tables with read lock;
interactive_timeout=60
wait_timeout=60

 

(4) 查看主库状态

 

查看主库状态,即当前日志文件名和二进制偏移量

show master status 命令显示的信息要记录在案,后面的从库复制时是从这个位置开始同步。

 

(5)导出数据库数据

 

单开新窗口,导出数据库数据,若是数据量比较大,能够停库直接打包数据文件迁移。

mkdir /server/backup/ -p
mysqldump -uroot -p'password' -S /data/3306/mysql.sock -A -B |gzip >/server/backup/mysql_bak.${date +%F}.sql.gz
ls -l /server/backup/mysql_bak.${date +%F}.sql.gz

 

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

mysql -u root -p'password' -S /data/3306/mysql.sock -e "show master status"

 

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

unlock tables;

 

(6) 把主库备份的MySQL数据迁移到从库

 

这不经常使用命令有scp,rsync等,相关命令前面的课程已详细讲解过了,这里就很少描述了。

本文讲解的是单数据库多实例主从配置,所以,数据在一台机器上,查看下数据

 

2 从库执行操做

 

(1) 设置server-id 值并关闭binlog设置

 

数据库的server-id通常在LAN内是惟一的,这里的server-id要和主库及其余从库不一样,并解析掉从库的binlog参数配置执行vi /data/3307/my.cnf配置文件,按以下两个参数内容修改:

[mysqld]
server-id=2
#log-bin=/data/3307/mysql-bin

 

(2) 还原主库导出的数据备份

gzip -d mysql_bak.2014-04-17.sql.gz
mysql -uroot -p'password' -S /data/3307/mysql.sock < mysql_bak.2014-04-17.sql

 

(3) 登陆从库配置同步参数

mysql -uroot -p'password' -S /data/3307/mysql.sock
CHANGE MASTER TO
MASTER_HOST='10.0.0.x', <==这里是主库的IP
MASTER_PORT=3306,  <==这里是主库的端口,从库端口能够和主库不一样。
MASTER_USER='rep',<==这里是主库上创建的用于复制的用户rep
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.0000008',<==这里是show master status时看到的查到二进制文件名称
MASTER_POS=342;<==这里是show master status时看到的查看二进制日志偏移量,注意不能多空格。

 

不登录数据库,在命令行快速执行CHANGE MASTER的语句(适合在脚本中批量建Slave库用)

本文即用此法来操做

cat |mysql -uroot -p'password' -S /data/3307/mysql.sock<< EOF

CHANGE MASTER TO

MASTER_HOST='10.0.0.x',
MASTER_PORT=3306, 
MASTER_USER='rep',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.0000008',
MASTER_LOG_POS=342;

EOF

 

也可登陆数据库里面执行以下语句:

 

CHANGE MASTER TO

MASTER_HOST='192.168.1.234',
MASTER_PORT=3306, 
MASTER_USER='rep',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000010',
MASTER_LOG_POS=261;

 

(4) 启动从库同步开关

启动从库同步开关,并查看同步状态

 

mysql -uroot -p'password' -S /data/3307/mysql.sock -e "start slave;"
mysql -uroot -p'password' -S /data/3307/mysql.sock -e "show slave status\G;"

 

判断复制是否搭建成功就看以下IO和SQL两个线程是否显示为Yes状态

Slave_IO_Running:Yes  负责从库去主库读取Binlog日志,并写入从库的中继日志中

Slave_SQL_Runnint:Yes  负责读取并中继日志中Binlog,转换SQL语句后应用到数据库汇总

 

Ok 到此整个过程基本上完成了。

相关文章
相关标签/搜索