centos配置 mysql 主从复制

1、准备

两台已经安装好mysql数据库的centos服务器

确保主数据库与从数据库一模一样。

例如:此文档中的Slave库中需要与Mater库中23bookstore数据库和表完全一样

2、原理

mysql主从配置的流程大致工作原理如下图所示:

centos配置 mysql 主从复制_第1张图片

1)master会将变动记录到二进制日志里面;

2)master有一个I/O线程将二进制日志发送到slave;

3) slave有一个I/O线程把master发送的二进制写入到relay日志里面;

4)slave有一个SQL线程,按照relay日志处理slave的数据;

3、操作步骤

按照上面的原理,开启mysql主从复制大体需要做以下操作:

3.1、修改Master的my.cnf
vim /etc/my.cnf指令开始编辑my.cnf
log-bin=master-bin-log #添加二进制日志配置,开启二进制日志功能master-bin-log是日志文件名称,可以自己指定
server-id=1 #server-id 必须要指定,不然会报错,每一台指定一个唯一标识符
binlog-do-db=23bookstore #指定对名称为23bookstore的数据库记录二进制日志
binlog-ignore-db=mysql #指定不对名称为mysql的数据库记录二进制日志
binlog_format=mixed #binlog日志格式,mysql默认采用,如果从服务器slave有别的slave要复制那么该slave也需要这一项
expire_logs_days=7 #超过7天的binlog删除
3.2、修改Slave的my.cnf
server-id=2
replicate-do-db=23bookstore #需要做复制的数据库,如果复制多个数据库,重复设置这选项即可master上不需要此项,slave上需要
3.3、授权Slave复制Mater的数据
在Mater的mysql命令行中运行下面的指令
GRANT REPLICATION SLAVE ON *.* TO 'xxx'@'slave_ip' IDENTIFIED BY 'yyy';flush privileges; #第一条命令的意思是允许在某个IP地址的某个用户以某个密码对当前数据库的所有库和所有表进行复制操作
3.4、在命令行中执行指令指明Slave的Mater
3.4.1、查看Master的日志文件名字,以及文件所在的位置
首先在Master端的mysql命令行中运行show master status;查看Master的日志文件名字,以及文件所在的位置用以在配置Slave的Master时使用,如
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000003 |     3796 | 23bookstore  |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
3.4.2、配置Slave的的Master
在Slave的mysql命令行中运行如下指令指定Slave的Master
mysql>CHANGE MASTER TO
>MASTER_HOST='Slave所在服务器的IP',#此处为slave_ip
>MASTER_USER='master授权的账号',#此处为xxx
>MASTER_PASSWORD='master授权的密码', #此处为yyy
>MASTER_LOG_FILE='master的日志文件名', #此处为mysql-bin.000003
>MASTER_LOG_POS=master的日志所在位置 #此处为3796;
做完所有配置后主从数据库都进行重启 service mysqld restart;Slave端执行start slave 启用主从复制,启用后slave的mysql命令行中运行show slave status\G;查看slave的运行状态,如下截图所示centos配置 mysql 主从复制_第2张图片
Slave_IO_Running: YES 表示slave的日志读取线程开启
Slave_SQL_Running: YES 表示SQL执行线程开启


4、测试主从复制是否成功

在Master的23bookstore数据库中通过命令行或者通过Navicat等数据库工具创建一个测试表,如下所示

CREATE TABLE `t_ms` (
  `sid` int(11) NOT NULL AUTO_INCREMENT,
  `sname` varchar(20) NOT NULL,
  PRIMARY KEY (`sid`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

查看Slave端的23bookstore中是否也创建以一个t_ms表。

在Master端执行insert into t_ms value(null,'Owen'),运行后查看Slave端的t_ms表中是否有了刚才存进Master端的相同记录!如果Slave跟随Master的脚步,在23bookstore中创建了t_ms表和插入了相同的数据表示主从复制配置成功!

 

 

你可能感兴趣的:(mysql)