主从复制包含两个步骤:

在 master 主服务器(组)上的设置,以及在 slave 从属服务器(组)上的设置。

环境:

MASTER: 192.168.155.101
SLAVE: 192.168.155.102

注意点:

1. 配置主服务器 master需要启用二进制日志。
2. 给 master 设置唯一的 server_id ,所有的 slave 从属服务器也要设置 server_id。server_id值可以是整数型的数字(1 ~ 2^31-1), 在同一个复制组(replicating group)中的每台服务器的server_id都必须是唯一的。
3. slave 从属服务器需要有连接并从master复制的权限, 通常是为每一台slave 创建一个单独的用户(user),并且只授予复制的权限(REPLICATION SLAVE 权限).也可使用共用的用户权限。

MASTER配置:
First Node (MASTER: 192.168.155.101)
---------------
vi /etc/my.cnf.d/server.cnf

[mysqld]
server-id=1
log-bin=master-bin
binlog-do-db=my-db #需要启用事务日志的数据库名
binlog-ignore-db=mysql #不启用事务日志的系统数据库名

以上两行不指定的话,将对全部数据库启用事务日志。

GRANT REPLICATION SLAVE ON *.* TO 'rep_user'@'%' IDENTIFIED BY 'rep_pass';
FLUSH PRIVILEGES;

# service mysql restart

查看Master当前二进制日志的position时,需要阻止任何数据的提交,并锁定所有的表。
MariaDB [(none)]> FLUSH TABLES WITH READ LOCK;
MariaDB [(none)]> SHOW MASTER STATUS;
+-------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000001 | 245 | | |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

记下File列的日志文件名和Position列的位置数,在SLAVE上同步时需要。
备份MASTER上的数据库并在SLAVE上手动导入。

释放表锁定
MariaDB [(none)]> UNLOCK TABLES;

SLAVE配置:

Other Node (SLAVE: 192.168.155.102)
---------------
vi /etc/my.cnf.d/server.cnf

[mysqld]
server-id=2
read-only=on
relay-log=relay-bin
innodb_recovery_update_relay_log=1
relay_log_recovery=1
replicate-do-db=my-db #需要同步事务日志的数据库名
replicate-ignore-db=mysql #不需要同步事务日志的系统数据库名

以上两行不指定的话,将对全部数据库同步事务日志。

# service mysql restart

MariaDB [(none)]> show variables like '%relay%';
+----------------------------------+----------------+
| Variable_name | Value |
+----------------------------------+----------------+
| innodb_recovery_update_relay_log | ON |
| max_relay_log_size | 0 |
| relay_log | relay-bin |
| relay_log_index | |
| relay_log_info_file | relay-log.info |
| relay_log_purge | ON |
| relay_log_recovery | ON |
| relay_log_space_limit | 0 |
| sync_relay_log | 0 |
| sync_relay_log_info | 0 |
+----------------------------------+----------------+
10 rows in set (0.00 sec)

开始同步
MariaDB [(none)]> CHANGE MASTER TO
-> MASTER_HOST='192.168.155.101',
-> MASTER_USER='rep_user',
-> MASTER_PASSWORD='rep_pass',
-> MASTER_PORT=3306,
-> MASTER_LOG_FILE='master-bin.000001',
-> MASTER_LOG_POS=245,
-> MASTER_CONNECT_RETRY=10;
Query OK, 0 rows affected (0.08 sec)

MariaDB [(none)]> START SLAVE;

查看SLAVE状态:
MariaDB [(none)]> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.155.101
Master_User: rep_user
Master_Port: 3306
Connect_Retry: 10
Master_Log_File: master-bin.000002
Read_Master_Log_Pos: 411
Relay_Log_File: relay-bin.000006
Relay_Log_Pos: 696
Relay_Master_Log_File: master-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: 411
Relay_Log_Space: 1269
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: 1
1 row in set (0.00 sec)

查看Slave_IO_Running和Slave_SQL_Running,如果都是Yes说明搭建成功,就可以建表插入数据测试了。

如果需要暂停SLAVE复制
MariaDB [(none)]> STOP SLAVE;

如果出现SLAVE不同步的现象,可以先暂停SLAVE复制,再执行一次同步操作即可。

MySQL高可用配置(主从复制)的更多相关文章

  1. OpenStack中MySQL高可用配置

    采用Heartbeat+DRBD+mysql高可用方案,配置两个节点的高可用集群 l  配置各节点互相解析 gb07 gb06 l  配置各节点时间同步 gb07 [root@gb07 ~]# ntp ...

  2. MySQL 高可用之主从复制

    MySQL主从复制简介 Mysql的主从复制方案,都是数据传输的,只不过MySQL无需借助第三方工具,而是自带的同步复制功能,MySQL的主从复制并不是磁盘上文件直接同步,而是将binlog日志发送给 ...

  3. Lvs+Keepalived实现MySQL高可用

    LVS+Keepalived+MySQL高可用配置 本文所有配置前提是已实现MySQL双主备份(MySQL双主) 安装前的准备: VIP:192.168.0.201 Keepalived: Keepa ...

  4. 003.MySQL高可用主从复制新增slave

    一 基础环境 主机名 系统版本 MySQL版本 主机IP master CentOS 6.8 MySQL 5.6 172.24.8.10 slave01 CentOS 6.8 MySQL 5.6 17 ...

  5. MySQL+keeplived高可用配置

    MySQL高可用基础环境:基于MySQL互为主从(双主.主主),请现配置 主备两台机器 主的操作1.在keepalived主服务器上安装keepalived yum -y install keepal ...

  6. MySQL高可用主从复制新增slave

    原文转自:https://www.cnblogs.com/itzgr/p/10233932.html作者:木二 目录 一 基础环境 二 新增slave2方案 2.1 方案1:-复制主库 2.2 方案2 ...

  7. MySQL高可用架构之MHA

    简介: MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是 ...

  8. mysql高可用架构

    高可用   高可用(High Availabiltity) 应用提供持续不间断(可用)的服务的能力 系统高可用性的评价通常用可用率表示   造成不可用的原因 硬件故障(各种) 预期中的系统软硬件维护 ...

  9. [转载] MySQL高可用方案选型参考

    原文: http://imysql.com/2015/09/14/solutions-of-mysql-ha.shtml?hmsr=toutiao.io&utm_medium=toutiao. ...

随机推荐

  1. if (user?.Identity?.IsAuthenticated ?? false)这几个问号分别都代表啥意思?

    if (user?.Identity?.IsAuthenticated ?? false)这几个问号分别都代表啥意思? 0 悬赏园豆:5 [已解决问题] 浏览: 229次 解决于 2018-05-16 ...

  2. css 深入理解

    场景一.边框半透明,背景绿色 默认情况下背景会延伸到边框所在的下边 css2 中我们只能接受  css3 中我们可以通过 background-clip 属性来实现 border: 10px soli ...

  3. ReentrantLock的相关方法使用

    获取锁定 void lock():常用获取锁定的方法 void lockInterruptibly():如果当前线程未被中断,则获取锁定:如果当前线程被中断,则出现异常 boolean tryLock ...

  4. 第一章 Xshell5评估期已过问题

    您的Xshell评估期已过.请访问我们的在线商店购买Xshe许可证.产品密钥将通过电子邮件发送给您. 解决方法 一.进入下载网站 https://www.netsarang.com/zh/thank- ...

  5. CentOs如何找回root密码

    当CentOs的root密码忘了的时候,可以进入单用户模式,更改一下root密码就可以了. 具体操作如下 1.重启Linux后,在此界面,3秒内按下回车键 2.出现此界面 3.按e键,进入下图,然后把 ...

  6. react-native run-android出现红屏错误

    react-native run-android出现 unable to load script from assets 'index.android.bundle'.Make sure your b ...

  7. Go基础之基本数据类型

    Go基础之基本数据类型 基本数据类型 整形 int8.int16.int32.int64 无符号整形:uint8.uint16.uint32.uint64 uint8就是我们熟知的byte型 类型 描 ...

  8. Boost Download

    { //https://www.boost.org/users/history/version_1_71_0.html }

  9. python判断文件的编码格式是否为UTF8 无BOM格式

    转自: https://www.cnblogs.com/ferraborghini/p/4951102.html https://www.cnblogs.com/Detector/p/8744992. ...

  10. Array排序和List排序

    public class SortTest { public static void main(String[] args) { int arr[]={12,4,45,23,5,7,9,33}; Sy ...