Mysql 主重复制搭建

  • Linux版本:Linux Centos 6.4 32位
  • Mysql版本:Mysql-5.6.38-linux-glibc2.12-i686
  • Mysql安装:Mysql安装教程
  • 搭建环境:在源LAMP架构基础,增加一台Mysql服务,搭建Replication 主从。

主Mysql配置

1、修改本地主机名为master(可略)。

# 临时修改主机名
hostname master
# 实时生效
bash
Mysql 主从复制搭建_数据库Mysql 主从复制搭建_主机名_02
vim /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=master
永久修改主机名

2、修改Mysql主配置文件、重启服务。

Mysql 主从复制搭建_数据库Mysql 主从复制搭建_主机名_02
# 指定同步的库
binlog-do-db=db1,db2 

# 忽略不同步的库
binlog-ignore-db=db1,db2 

注:需要从数据库吻合才可成立。
选择添加/指定数据库名做主从
# 修改mysql主配置文件
vim /etc/my.cnf
# 解注释:主ID为1
server-id = 1
# 解注释:开启二进制日志,mysql-bin前缀名
log-bin=mysql-bin
# 重启Mysql服务
/etc/init.d/mysqld restart
Mysql 主从复制搭建_数据库Mysql 主从复制搭建_主机名_02
# 查看bin-log日志
ls /data/mysql/mysql-bin.*

/data/mysql/mysql-bin.000001  /data/mysql/mysql-bin.000002  /data/mysql/mysql-bin.000011  /data/mysql/mysql-bin.index
查看是否生成二进制文件

3、授权主从用户。

# 进入数据库
mysql -uroot -p
# 添加用户repl 授权主从 允许访问所有库
mysql> grant replication slave on *.* to 'repl'@'192.168.1.115' identified by '123456';
# 安全起见:占时锁表,不让数据库更新
mysql> flush tables with read lock;

4、查看二进制相关信息。

# 查看二进制文件、位置数 | 需要记录到从数据库内
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000016 | 3722 | | | | +------------------+----------+--------------+------------------+-------------------+

5、备份主数据到从数据库内(如果两台Mysql数据相同可略此步骤)

Mysql 主从复制搭建_数据库Mysql 主从复制搭建_主机名_02
# 从测试:终端是否可连接主数据库端,使用授权用户。
mysql -urepl -p123456 -h192.168.1.111 -P3306

注:可登陆说明链接正常。
注:链接不上需要查看网络,端口,密码,地址等是否正确。
从数据库:测试数据库链接
Mysql 主从复制搭建_数据库Mysql 主从复制搭建_主机名_02
# 备份数据库discut备份名为1.sql
mysqldump -uroot -p123456 discut > 1.sql
# 远程将备份文件发送给从服务端的root目录内
scp 1.sql root@192.168.1.115:/root/
主数据库:备份数据库、发送给从服务端
Mysql 主从复制搭建_数据库Mysql 主从复制搭建_主机名_02
# 创建主的同名库
mysql -uroot -p123456 -e "create database discuz";
# 数据导入数据库内
mysql -uroot -p123456 discuz < 1.sql
从数据库:导入主备份数据

 从Mysql配置

1、修改本地主机名为(可略)。

# 临时修改主机名
hostname slave
# 实时生效
bash
Mysql 主从复制搭建_数据库Mysql 主从复制搭建_主机名_02
vim /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=slave
永久修改主机名

2、修改Mysql主配置文件、重启服务。

Mysql 主从复制搭建_数据库Mysql 主从复制搭建_主机名_02
# 需要同步的库
replicate-do-db=db1,db2

# 忽略不同步的库
replicate-ignore-db=db1,db2

注:需要主数据库吻合才可成立。
选择添加/指定数据库名做主从
# 修改mysq主配置文件
vim /etc/my.cnf
# 解注释:从ID为2、从可以注释掉此选项
server-id = 2
# 重启Mysql服务
/etc/init.d/mysqld restart

 3、进入数据库配置主从。

# 进入数据库
mysql -uroot -p
# 关闭复制
mysql> stop slave;
# 配置主从建立链接、master_log_file与master_log_pos要与主内的数据匹配
mysql> change master to master_host='192.168.1.111',master_port=3306,master_user='repl',master_password='123456',master_log_file='mysql-bin.000015',master_log_pos=1150;
# 开启复制
mysql> start slave;

4、查看主从链接情况,两个yes是正确的。

Mysql 主从复制搭建_数据库Mysql 主从复制搭建_主机名_02
mysql> show slave status\G;


*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.1.111
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000015
          Read_Master_Log_Pos: 1150
               Relay_Log_File: slave-relay-bin.000002
                Relay_Log_Pos: 283
        Relay_Master_Log_File: mysql-bin.000015
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
测试主从是否链接成功

5、主数据库:从配置完毕后把表锁打开。

mysql> unlock tables;

 测试主从复制

Mysql 主从复制搭建_数据库Mysql 主从复制搭建_主机名_02
mysql> create database xiangsikai;
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| discuz             |
| mysql              |
| performance_schema |
| test               |
| xiangsikai         |
+--------------------+
主创建一个数据库
Mysql 主从复制搭建_数据库Mysql 主从复制搭建_主机名_02
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| discuz             |
| mysql              |
| performance_schema |
| test               |
| xiangsikai         |
+--------------------+
查看是否创建数据库
Mysql 主从复制搭建_数据库Mysql 主从复制搭建_主机名_02
  说明:Mysql主从复制比较脆弱,谨慎操作。如果重启master,请务必要先把slave停掉,也就是说需要在slave上去执行stop slave命令,然后再去重启master的mysql服务,否则很有可能会中断。当然重启完后,还需要把slave给开启start slave 。
注意事项
Mysql 主从复制搭建_数据库Mysql 主从复制搭建_主机名_02
查看错误日志/data/mysql/slave.err
删除master.info文件
删除relay-log.info文件
删除所有/data/mysql下生成的bin.的二进制日志文件
配置冲突报错处理

  主从复制从新建立链接

Mysql 主从复制搭建_数据库Mysql 主从复制搭建_主机名_02
# 登陆mysql
mysql -uroot -p

# 查看主库是否为之前的ip
mysql>show slave status\G; 

# 取消主从
mysql>change master to master_host=' ';
mysql>slave stop;
mysql>reset slave;

# 查看状态
mysql>show slave status\G; 
1、取消主从关系
Mysql 主从复制搭建_数据库Mysql 主从复制搭建_主机名_02
# 登陆数据库
mysql -uroot -p

# 关闭复制
mysql>stop slave;

# 建立主从master_host 为要更改主库的ip地址、master_password 为要修改的密码
mysql>change master to master_host=‘192.168.1.1’, master_user='repl', master_password=‘xxxxxxx’, MASTER_AUTO_POSITION = 1;

# 启动复制
mysql>start slave;
2、重新构建主从关系