1、 在每台服务器上创建复制账号(也可以只在master上创建用户,这里配置两个是为了方便以后切换)
备库运行的I/O县城需要建立一个到主库的TCP/IP连接,所以必须在主库创建一个用户,并赋予合适的权限。备库I/O线程以该用户名连接到主库并读取起二进制日志。
创建用户语句
GRANT REPLICATION SLAVE, REPLICATION CLIENTON *.*
TO repl@’192.168.0.%’IDENTIFIED BY ‘password’;
在主库和备库都创建该账号。
2、 配置主库和备库
配置主库
在主库上打开二进制日志,并指定一个唯一的服务器ID,在主库的my.cnf文件中增加或修改如下内容:
log_bin = MySQL-bin
server_id = 10
重启mysql
确认二进制日志文件是否已经在主库创建,使用命令:SHOW MASTER STATUS。
输出如下,证明成功
FILE POSITION BINLOG_DO_DB BINLOG_IGNORE_DB
mysql-bin.000001
配置备库
修改my.cnf(只有server_id是必须的,其他可以采用默认)
log_bin = mysql-bin
server_id = 2
relay_log =/var/lib/mysql/mysql-relay-bin(配置中继日志目录)
log_slave_updates = 1
read_only-=1
重启服务(不要在my.cnf中配置master_port或master_host)
3、 启动复制--通知备库连接到主库并从主库复制数据
这里是告诉备库如何连接到主库,并重放其二进制日志。这里不需要修改my.cnf,而是使用 CHANGE MASTER TO 语句,该语句替代了my.cnf的设置,并且使得以后指向别的主库时无需重启备库。下面是开始复制的基本命令
mysql> CHANGE MASTER TO MASTER_HOST=’MASTERSERVER_IP’,
->MASTER_USER=’REPL’,
->MASTER_PASSWORD=’P4SSWORD’,
->MASTER_LOG_FILE=’MYSQL-BIN.00001’,
->MASTER_LOG_POS=0;
可以通过SHOW SLAVE STATUS;
查看CHANGE MASTER 是否成功;
运行下面的命令开始复制:
mysql>START SLAVE;
同样可以通过 SHOW SLAVE STATUS;检查执行状态;
*Slave_io_Running,Slave_sql_Running这两个线程一定要为YES
前者是读取中继日志的线程,后者是执行中继日志的线程。
通过如下命令,可以分别查看主库和备库的线程状态
mysql>SHOW PROCESSLIST\G
主库上有一个备库发起的连接线程,备库有两个相关线程,一个是I/O线程,一个是SQL线程