开发者社区> miles_wong> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

mysql主从复制部署

简介: 主从复制的用途: 实时灾备,用于故障切换 读写分离,提供查询服务 备份,避免影响业务 主从复制部署 必要条件 主库开启binlog日志(设置log-bin参数) 主从server-id不同 从库服务器连通主库 步骤 ...
+关注继续查看

这里写图片描述

  • 主从复制的用途:

    • 实时灾备,用于故障切换
      机器宕机,或者软件bug,导致数据库无法提供服务
      切换到从库
      这里写图片描述
    • 读写分离,提供查询服务
      这里写图片描述
    • 备份,避免影响业务
      这里写图片描述
  • 主从复制部署

    • 必要条件

      • 主库开启binlog日志(设置log-bin参数)
      • 主从server-id不同
      • 从库服务器连通主库
    • 步骤

      • 备份还原(mysqldump或xtrabackup)
      • 授权(grant replication slave on .)
      • 配置复制,并启动(change master to )
      • 查看主从复制信息(show slave status\G)

实验环境:
节点1:(主节点)

hostname:miles21
ip      :192.168.137.21

节点2:(从节点)

hostname:miles22
ip      :192.168.137.22

备份miles21上的数据

[root@miles21 ~]# mysqldump -uroot -pbeijing --socket=/data/mysql.sock --single-transaction -A --master-data=1 > /home/mysql/backup/all_db.sql
查看备份文件
[root@miles backup]# more all_db.sql 
...
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000013', MASTER_LOG_POS=528;
...

还原miles21上的数据

[root@miles21 mysql]# mysql -uroot -pbeijing -hmiles22 -P3307
mysql> source /home/mysql/backup/all_db.sql;

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| db1                |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)

授权:在miles21上授权一个具有复制权限的用户

[root@miles backup]# mysql -uroot -p --socket=/data/mysql.sock 
mysql> grant replication slave on *.* to repl@'192.168.137.22' identified by 'beijing';
Query OK, 0 rows affected (0.01 sec)

配置复制:在miles22上

[root@miles22 ~]# mysql -uroot -p --socket=/data/mysql.sock
mysql> ? change master to
...
CHANGE MASTER TO
  MASTER_HOST='master2.mycompany.com',
  MASTER_USER='replication',
  MASTER_PASSWORD='bigs3cret',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='master2-bin.001',
  MASTER_LOG_POS=4,
  MASTER_CONNECT_RETRY=10;

...
#这里的MASTER_LOG_FILE、MASTER_LOG_POS为备份文件中的信息(上文中可看到)
mysql> CHANGE MASTER TO MASTER_HOST='192.168.137.21',MASTER_USER='repl',MASTER_PASSWORD='beijing',MASTER_PORT=3333,MASTER_LOG_FILE='mysql-bin.000013',MASTER_LOG_POS=528;
Query OK, 0 rows affected, 2 warnings (0.02 sec)
#启动复制
mysql> start slave;
Query OK, 0 rows affected (0.01 sec)
#查看主从复制信息
mysql> show slave status\G
...
#表示主从复制OK
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
...

检验主从复制
在miles21上进行操作

mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| test          |
+---------------+
1 row in set (0.00 sec)

mysql> select * from test;
+------+------+
| id   | name |
+------+------+
|    1 | m1   |
|    2 | m2   |
+------+------+
2 rows in set (0.00 sec)

mysql> insert into test values (3,'m3'),(4,'m4');
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> commit;
Query OK, 0 rows affected (0.00 sec)

mysql> create database db2;
Query OK, 1 row affected (0.00 sec)

在miles22上查看

mysql> select * from test;
+------+------+
| id   | name |
+------+------+
|    1 | m1   |
|    2 | m2   |
|    3 | m3   |
|    4 | m4   |
+------+------+
4 rows in set (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| db1                |
| db2                |
| mysql              |
| performance_schema |
+--------------------+
5 rows in set (0.00 sec)

在miles21上

mysql> drop database db2;
Query OK, 0 rows affected (0.00 sec)

在miles22上查看

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| db1                |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
mysql主从复制
1、主从服务器分别作以下操作:  1.1、版本一致  1.2、初始化表,并在后台启动mysql  1.3、修改root的密码2、修改主服务器master:   #vi /etc/my.cnf       [mysqld]       log-bin=mysql-bin   //[必须]启用二进制日志...
623 0
MySQL-主从复制
前言 前篇说了作为运维在数据库块最起码要会两大技能,今天来说说第二技能--主从复制 随着业务的增长,一台数据库服务器以满足不了需求了,负载过重,这时候就需要减压,实现负载均衡读写分离,一主一从或一主多从 主服务器只管写,从服务器管读,从而提高效率减轻压力。
1587 0
+关注
miles_wong
Java核心技术 数据存储与数据库 分布式系统与计算 系统研发与运维 编程语言
87
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载