mysql 主从配置(master/slave)

时间:2022-06-27 00:01:28

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线程