提取sgl文件mysql数据库_Mysql主从复制

扩展方式: Scale UP, Scale Out

MySQL的扩展:

复制: 每个节点都有相同的数据集

向外扩展

二进制日志

单向

复制的功用:

数据分布

负载均衡读

备份

高可用和故障切换

MySQL升级测试

主从复制线程:

主节点:

dump Thread: 为每个Slave的I/O Thread启动一个dump线程,向从库发送binary log events

从节点:

I/O Thread: 向Master 请求二进制日志事件,并保存于中继日志中,

SQL Thread: 从中继日志中读取日志事件,在本地完成重放

跟复制功能相关的文件:

master.info: 用于保存slave链接至master时的相关信息,例如: 账号,密码, 服务器地址等

relay-log.info: 保存在当前slave节点上,已经复制的当前二进制日志和本地replay log日志的对应关系

主从复制特点:

异步复制

主从数据不一致比较常见

复制架构:

Master/Slave , Master/Master, 环状复制 ,一主多从

从服务器还可以在有从服务器

一丛多主,适用于多个不同数据库

复制需要考虑二进制时间记录格式

STATEMENT(5.0之前) ROW(5.1之后,推荐), MIXED

各种复制模型实战:

主从,主主,半同步复制, 复制过滤器

主从配置过程参考文档:

https://mariadb.com/kb/en/library/setting-up-replication/

https://dev.mysql.com/doc/refman/5.5/en/replication-configuration.html

主节点:

1) [mysqld]

log_bin=mysql-bin

2) 当前节点设置一个全局唯一的ID号

[mysqld]

server_id=#

3) 创建由复制全向的用户账号

GRANT REPLCATION SLAVE ON *.* TO ‘repluser‘@HOST IDENTIFIED BY ‘password‘;

从节点配置:

1)启动中继日志

[mysqld]

server_id=# 为当前节点设置一个全局惟的ID号

relay_log=relay-log relay log的文件路径,默认值hostname-relay-bin

relay_log_index=relay-log.index默认值hostname-relay-bin.index

2)使用有复制权限的用户账号连接至主服务器,并启动复制线程

mysgl> CHANGE MASTER TO MASTER_HOST=‘host‘,MASTER_USER=‘repluser‘,MASTER_PASSWORD=‘replpass‘,MASTER_LOG_FILE=‘mysql-binxxxxx‘,MASTER_LOG_POS=#;

mysgl> START SLAVE [IO_THREAD|SQL_THREAD];

实战操作

1. Master 配置

1) 修改配置文件

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

innodb_file_per_table

log_bin

server_id=1

2) 创建测试数据库(可选),创建复制用户

# 查看 要复制的log日志size 点

MariaDB [(none)]> show binary logs;

+--------------------+-----------+

| Log_name | File_size |

+--------------------+-----------+

| mariadb-bin.000001 | 245 |

+--------------------+-----------+

# 创建数据库测试文件

MariaDB [(none)]> create database test;

Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> use test

MariaDB [test]> create table students(id int auto_increment primary key,name varchar(30) not NULL UNIQUE key ,gender char(1) DEFAULT‘m‘);

Query OK, 0 rows affected (0.36 sec)

MariaDB [test]> insert into students (name) values (‘Zhang San‘),(‘Li Si‘);

Query OK, 2 rows affected (0.00 sec)

Records: 2 Duplicates: 0 Warnings: 0

MariaDB [test]> insert into students (name) values (‘Wang Wu‘),(‘Zhao Liu‘);

Query OK, 2 rows affected (0.00 sec)

Records: 2 Duplicates: 0 Warnings: 0

# 查看 bin log日志

MariaDB [test]> show binary logs;

+--------------------+-----------+

| Log_name | File_size |

+--------------------+-----------+

| mariadb-bin.000001 | 1841 |

+--------------------+-----------+

1 row in set (0.00 sec)

# 创建复制用户

MariaDB [test]> grant replication slave on *.* to [email protected]‘192.168.10.%‘ identified by ‘123456‘;

Query OK, 0 rows affected (0.00 sec)

从服务器配置

1) 配置数据库文件

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

innodb_file_per_table

server_id=2

2)

MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST=‘172.16.0.40‘,MASTER_USER=‘alave‘,MASTER_PASSWORD=‘123456‘,MASTER_LOG_FILE=‘mariadb-bin.000001‘,MASTER_LOG_POS=245;

Query OK, 0 rows affected (0.00 sec)

3) 启动同步线程

MariaDB [(none)]> start slave;

Query OK, 0 rows affected (0.00 sec)

4) 查看从服务器状态

MariaDB [(none)]> show slave status\G

检查,查看日志信息

# 主服务器执行

MariaDB [test]> show binary logs;

+--------------------+-----------+

| Log_name | File_size |

+--------------------+-----------+

| mariadb-bin.000001 | 2155 |

+--------------------+-----------+

# 从服务器执行

MariaDB [(none)]> show slave status\G

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 172.16.0.40

Read_Master_Log_Pos: 2155 Seconds_Behind_Master: 0  #主从同步的时间差

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值