mysql主从配置与数据移植

配置mysql的主从模式,当一台mysql出现问题后,另外一台可以正常工作。 两台机器IP:192.168.1.60(master)、192.168.1.61(slave) 注意:在配置之前,确保两台节点都有需同步的数据库。

1、master节点配置

1.1、修改配置文件

192.168.1.60:master节点 vim /etc/my.cnf 添加如下内容:

 [mysqld]
 log-error=/data/mysql_log/error.log  # mysql的error日志
 log=/data/mysql_log/mysql.log  # mysql的操作日志
 log-bin=/data/mysql_log/binlog  # 配置binlog,通过binlog将两个mysql同步
 server-id=1  # 配置本台机器mysql的id
 binlog-do-db = mytest # 配置需要同步的数据库

1.2、master节点需要授权slave节点访问

mysql>GRANT REPLICATION SLAVE ON *.* to 'root'@'192.168.1.61' identified by 'test123456';
mysql>FLUSH PRIVILEGES;

如果要允许所有主机访问,用%代替ip即可:

mysql>GRANT REPLICATION SLAVE ON *.* to 'root'@'%' identified by 'test123456';
mysql>FLUSH PRIVILEGES;

1.3、重启服务

service mysqld restart 重启服务的过程中可能遇到启动失败的情况:

/usr/local/mysql/bin/mysqld: File '/data/mysql_log/binlog.index' not found (Errcode: 13)

这个主要是因为这个目录mysql用户没有权限导致的。 chown mysql /data/mysql_log 即可解决问题。

1.4、查看master进程的状态

MySQL [mytest]> show master status;
+---------------+----------+--------------+------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| binlog.000004 |      106 | mytest       |                  |
+---------------+----------+--------------+------------------+
1 row in set (0.00 sec)

slave节点配置

192.168.1.61:slave节点

2.1、修改配置文件

vim /etc/my.cnf 添加如下内容:

[mysqld]
log-error=/data/mysql_log/error.log  # mysql的error日志
log=/data/mysql_log/mysql.log  # mysql的操作日志
server-id=2  # 配置本台机器mysql的id
master-host=192.168.1.60  # master节点的ip
master-user=root  # 访问master节点的用户名
master-password=test123456  # 访问master节点的密码
master-port=3306  # 访问master节点的端口
replicate-do-db=mytest  # 配置需要同步的数据库

2.2 启动slave进程

mysql> slave start;
Query OK, 0 rows affected (0.04 sec)

2.3 查看slave状态

MySQL [mytest]> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 100.110.5.77
                  Master_User: root
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: binlog.000004
          Read_Master_Log_Pos: 106
               Relay_Log_File: TENCENT64-relay-bin.000014
                Relay_Log_Pos: 248
        Relay_Master_Log_File: binlog.000004
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: mytest
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 

看到Slave_IO_Running: Yes 和 Slave_SQL_Running: Yes ,就说明配置成功。

3、测试

master 插入一个表:

MySQL [mytest]> CREATE TABLE IF NOT EXISTS `runoob_tbl`(
    ->    `runoob_id` INT UNSIGNED AUTO_INCREMENT,
    ->    `runoob_title` VARCHAR(100) NOT NULL,
    ->    `runoob_author` VARCHAR(40) NOT NULL,
    ->    `submission_date` DATE,
    ->    PRIMARY KEY ( `runoob_id` )
    -> )ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected, 2 warnings (0.00 sec)

slave 查看效果:

MySQL [mytest]> show tables;
+------------------+
| Tables_in_mytest |
+------------------+
| runoob_tbl       |
+------------------+
1 row in set (0.00 sec)

master 插入数据:

MySQL [mytest]> insert into runoob_tbl(runoob_title,runoob_author,submission_date) values("ad","bb",now());
Query OK, 1 row affected, 1 warning (0.00 sec)

MySQL [mytest]> insert into runoob_tbl(runoob_title,runoob_author,submission_date) values("ae","bb",now());
Query OK, 1 row affected, 1 warning (0.00 sec)

MySQL [mytest]> insert into runoob_tbl(runoob_title,runoob_author,submission_date) values("af","bb",now());
Query OK, 1 row affected, 1 warning (0.00 sec)

slave查看数据:

MySQL [mytest]> select * from runoob_tbl;
+-----------+--------------+---------------+-----------------+
| runoob_id | runoob_title | runoob_author | submission_date |
+-----------+--------------+---------------+-----------------+
|         1 | ad           | bb            | 2018-03-08      |
|         2 | ae           | bb            | 2018-03-08      |
|         3 | af           | bb            | 2018-03-08      |
+-----------+--------------+---------------+-----------------+
3 rows in set (0.00 sec)

以上则说明配置测试成功。

4、master节点数据复制到slave节点

4.1 主库操作:

  1. 停止主库的数据更新操作

mysql>flush tables with read lock;

  1. 新开终端,生成主数据库的备份(导出数据库)

mysqldump -uroot -ptest123 cmdb > cmdb.sql

  1. 将备份文件传到从库

scp cmdb.sql root@192.168.8.11:/root/ 4、主库解锁

mysql>unlock tables;

4.2 从库操作:

1)停止从库slave

mysql>slave stop;

2)新建数据库cmdb

mysql> create database cmdb default charset utf8;

3)导入数据

mysql -uroot -ptest123 cmdb < cmdb.sql

4)查看从库已有该数据库和数据

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| cmdb               |
| mysql              |
| performance_schema |
| test               |
+--------------------+

5 启动slave进程

mysql>slave start;

上述是5.1版本的配置,5.7版本又有些不同的配置,如下:

  1. 不存在log=/data/mysql_log/mysql.log 配置
  2. slave节点配置时,不能通过配置文件配置用户名,密码,接口等等,需要通过命令:
mysql> CHANGE MASTER TO MASTER_HOST='192.168.8.10',
  MASTER_PORT=3306,
  MASTER_USER='rep1',
  MASTER_PASSWORD='test123456',
  MASTER_LOG_FILE='binlog.000001',
  MASTER_LOG_POS=1304; #后面两个参数的值与主库保持一致
  1. 启动slave时不能通过slave start命令,而是 start slave命令。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏流媒体人生

基于ffmpeg的wince版本网络收音机开发

10830
来自专栏数据和云

案发现场:被注入的软件及 ORA-600 16703 灾难的恢复

最近帮助一个客户恢复数据库,遇到了如下这个问题。让我们再一次惊醒于数据安全,如果不做好防范,问题总是会来得猝不及防。

27340
来自专栏码字搬砖

CDH impala hive hbase 整合

最终达到的效果是这样的:hbase是数据的存储中心。impala、hive可以增查habse数据,不支持insert overwrite impala...

38830
来自专栏一英里广度一英寸深度的学习

Java读取Mysql中文乱码

当完成以上全部配置,load data infile 文件装载到数据库,用client端读取,能正确显示中文。

35830
来自专栏乐沙弥的世界

如何获取mysql帮助信息

    在开发或测试环境在碰到mysql相关故障时,大多数朋友可能会通过论坛发帖,QQ群讨论方式来获取帮助。该方式是获取帮助的有效途径之一。然而如果在生产环境,...

10140
来自专栏杨建荣的学习笔记

系统级alias vs Oracle ADR功能(r5笔记第35天)

Oracle在11g中推出的新特性ADR,即Automatic Diagnostic Repository 个人理解这个工具就是能够高效的把一些日志文件轻松管理...

36880
来自专栏数据和云

Oracle数据库的初始化与跟踪学习方法

编辑说明:《Oracle性能优化与诊断案例精选》出版以来,收到很多读者的来信和评论,我们会通过连载的形式将书中内容公布出来,希望书中内容能够帮助到更多的读者朋友...

39990
来自专栏Jerry的SAP技术分享

ABAP Netweaver和Cloud Foundry上的环境变量Environment Variable

21520
来自专栏杨建荣的学习笔记

Oracle 12cR2中的ADG会话保留特性

Oracle 12cR2中有一个不错的特性,那就是Active Data Guard会话保留,原本的叫法是Preserving Active Data Guar...

30450
来自专栏搜云库

CentOs7.3 搭建 MySQL 5.7.19 主从复制,以及复制实现细节分析

CentOs7.3 搭建 MySQL 5.7.19 主从复制,以及复制实现细节分析 概念 主从复制可以使MySQL数据库主服务器的主数据库,复制到一个或多个My...

29750

扫码关注云+社区

领取腾讯云代金券