主从复制第一篇之异步复制

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 主从复制主要用途: 1.灾备切换 2.读写分离 3.备份,避免影响业务 4.高可用和故障切换 5.mysql测试升级 首先,异步主从复制主要步骤: 1.主库中开启log_bin 2.全备份主库 3.

主从复制主要用途:
1.灾备切换
2.读写分离
3.备份,避免影响业务
4.高可用和故障切换
5.mysql测试升级

首先,异步主从复制主要步骤:
1.主库中开启log_bin
2.全备份主库
3.授权(grant replication slave on .
4.配置复制,并启动(change master to)
5.查看主从复制信息

异步主从复制存在的主要问题:
1.主机宕机后,数据可能丢失
2.从库只有一个sql thread,当主库有大量写入时候,从库容易丢失数据

异步复制的演示:
第一步:主库中开启log_bin=1,在my.cnf文件中设置,这里就不详细介绍了。

第二步:用mysqldump进行主库全备份

[root@VM_85_42_centos downloads]# ps -ef |grep mysqld #查看配置位置
root      5307     1  0 Apr03 ?        00:00:00 /bin/sh /usr/local/mysql56/bin/mysqld_safe --defaults-file=/mysqldata/my.cnf
mysql     5539  5307  0 Apr03 ?        00:00:50 /usr/local/mysql56/bin/mysqld --defaults-file=/mysqldata/my.cnf --basedir=/usr/local/mysql56 --datadir=/mysqldata/node1 --plugin-dir=/usr/local/mysql56/lib/plugin --user=mysql --log-error=/mysqldata/node1/VM_85_42_centos.err --pid-file=/mysqldata/node1/VM_85_42_centos.pid --socket=/tmp/mysql.sock --port=6000
root     13332 20569  0 23:19 pts/0    00:00:00 grep --color=auto mysqld

[root@VM_85_42_centos downloads]#  mysqldump -uroot -p --socket=/tmp/mysql.sock --single-transaction -A --master-data=1 > all_data.sql
[root@VM_85_42_centos downloads]# mysqldump -uroot -p --socket=/tmp/mysql.sock --single-transaction -A --master-data=1 > all_data.sql
Enter password: 
[root@VM_85_42_centos downloads]# ls
all_data.sql

使用远程登入从库myqsl

mysql -utest -ptest -h(从库IP) -P(端口号)

登入从库后用

mysql>source all_data.sql; # 导入主库

第三步:主库授权用户

grant replication slave on *.* to replication@'(从库IP)' identified by 'replication';

从库配置复制

CHANGE MASTER TO
  MASTER_HOST='主库IP',
  MASTER_USER='replication',
  MASTER_PASSWORD='replication',
  MASTER_PORT=(根据my.cnf配置端口),
  MASTER_LOG_FILE='master2-bin.XXX',
  MASTER_LOG_POS=X,
  MASTER_CONNECT_RETRY=X; #等一系列参数

我的实例配置

mysql> change master to  
MASTER_HOST='119.29.215.56',
MASTER_USER='replication',
MASTER_PASSWORD='replication',
MASTER_PORT=6000,
MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=630;
#MASTER_LOG_FILE,MASTER_LOG_POS参数记录在刚才的 all_data.sql,可以用less命令查看。

配置完成以后启动:

mysql> start stave;

mysql> show slave status \G #是否启动看running是yes
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 119.29.215.56
                  Master_User: repl
                  Master_Port: 6000
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000002
          Read_Master_Log_Pos: 952
               Relay_Log_File: VM_91_3_centos-relay-bin.000002
                Relay_Log_Pos: 605
        Relay_Master_Log_File: mysql-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 952
              Relay_Log_Space: 787
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 6000
                  Master_UUID: cf441ef0-181b-11e7-b566-525400ef16de
             Master_Info_File: /mysqldata/node1/master.info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
           Master_Retry_Count: 86400
                  Master_Bind: 
      Last_IO_Error_Timestamp: 
     Last_SQL_Error_Timestamp: 
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: 
            Executed_Gtid_Set: 
                Auto_Position: 0

1 row in set (0.00 sec)

上面各类参数都是可以配置的,需要查看文档
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7月前
|
存储 SQL 关系型数据库
主从复制的原理、方法及详解
主从复制的原理、方法及详解
68 0
|
7月前
|
数据库
异步复制与同步复制结合
异步复制与同步复制结合
94 4
|
SQL 关系型数据库 MySQL
MySQL主从同步原理
MySQL主从同步原理
164 0
|
SQL 算法 关系型数据库
mysql主从复制的原理和实战
mysql主从复制的原理和实战
|
存储 数据库
数据复制系统设计(2)-同步复制与异步复制
复制的重要可选项: 同步复制,synchronously 异步复制,asynchronously
192 0
|
关系型数据库 MySQL 数据库
MySQL的延迟复制、半同步复制,主主复制,异步复制有什么区别?底层原理是什么?
MySQL的延迟复制、半同步复制,主主复制,异步复制有什么区别?底层原理是什么?
321 0
|
存储 关系型数据库 MySQL
MySQL的异步复制是什么意思?底层原理是什么?
MySQL的异步复制是什么意思?底层原理是什么?
|
NoSQL Redis 开发者
主从复制简介|学习笔记
快速学习主从复制简介
主从复制简介|学习笔记
|
SQL Oracle 关系型数据库
深入理解MySQL主从原理专栏 发布
相信作为一名DBA来讲MySQL主从一直都是一个绕不开的话题,我们在很多高可用构架中都能看到它的身影。在我们心中一定都或多或少的产生过一些疑问,比如: 主从延迟为什么会高? 主从延迟为什么一直不动? 主从延迟为什么瞬间跳动? 延迟为0就一定代表没有延迟吗? 从库异常重启为什么会报错? 从库能和主库一样利用索引吗? MTS是如何提高从库应用效率的? 为什么会有那么多和从库相关的sync参数,我该怎么配置? mysql.gtid_executed表有什么用?...... 这个系列就是想通过描述主从原理,抽丝剥茧解开大家对这些问题的疑惑。
2296 0