mysql/mariadb-主从复制

主从复制基本前提如下:

基本前提是,时间同步。如果里面有敏感数据,mysql协议是明文传输的,
很显然,我们要使用mysqlssl.

一般我们很少有直接在规划架构的时候就考虑到了,应该是有几台从服务器,或是要不要从服务器。
只有当业务量能够达到了一定的规模时,这个时候架构才会出现迭代,比如加缓存,加从服务器。

而真正等到要加从服务器的时候,主服务器上可能已经跑了大量的数据了。
(大量数据的情况如下处理)
那么我们一般是在主服务上做好备份,然后在备份这次备份后的二进制日志,
然后在从服务器上,先恢复主服务器的备份,然后在恢复二进制日志。
(极少量数据时)
那就可以直接复制了。

实验:
现模拟当双方都是空库的时候怎么复制
node1是主节点
node2是从节点

[ root@node1 ~ ]# vim /etc/my.cnf.d/server.cnf 
[server]
skip_name_resolve = ON #不要反解主机名,这样我们很多授权的主机名就能通过了。
innodb_file_per_table = ON #
max_connections = 20000 #(上面折现并不关键)

log_bin = /mydata/logs/master-log #(下面的一定要保证这像是添加的)
server_id = 1 #(服务器的id)

接下来

MariaDB [(none)]> show master status;
+-------------------+----------+--------------+------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-log.000022 |      245 |              |                  |
+-------------------+----------+--------------+------------------+

因为是手动清理的库,日志已经到了22节点了,记下这个数字就好了,
另外一个服务器复制就从这个节点往后复制就好了。

编辑node2

[ root@node2 ~ ]# vim /etc/my.cnf.d/server.cnf 
[server]
skip_name_resolve = ON 
innodb_file_per_table = ON 
max_connections = 20000

relay_log = relay-log
server_id = 2

时间必须要同步

主节点上要授权一个用户帐号用来做复制操作。

MariaDB [(none)]> grant replication client,replication slave on *.* to 'repluser'@'172.18.25.%' identified by 'replpass';
MariaDB [(none)]> flush privileges;#刷新权限

#replication 复制
#client      客户
#slave       奴隶
#identified  确定
#privileges  权限
#relay-log   中继日志

MariaDB [(none)]> show master status;
+-------------------+----------+--------------+------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-log.000022 |      497 |              |                  |
+-------------------+----------+--------------+------------------+

那么是从497开始复制

接下来就可以让从服务器开始复制了
在node2冲服务器上

MariaDB [(none)]> change master to master_host='172.18.25.51',master_user='repluser',master_password='replpass',master_log_file='master-log.000022',master_log_pos=497;

查看基本从服务器的复制的基本信息

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

然后启动从服务器

MariaDB [(none)]> start slave io_thread,sql_thread;

然后在主服务器上面创建一个数据库然后在从服务器上面查看。

node1:
MariaDB [(none)]> create database  mydb;
node2:
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb               |
| mysql              |
| performance_schema |
| test               |
+--------------------+

如果是要基于ssl的主从
那么给主配一个证书,在给从配一个证书
然后那么互相认证就好

实验:
加入我们的主节点上面有数据,怎么加从服务器
首先如果把主服务器上的最近一次的全量备份,或是全量备份加各种增量备份
提出来,然后叠加重放,最后回滚。
然后记录下节点号。

MariaDB [(none)]> show master status;

然后
在主服务器上面加入这个从服务器

MariaDB [(none)]> change master to master_host='172.18.25.51',master_user='repluser',master_password='replpass',master_log_file='master-log.000022',master_log_pos=497;

修改从服务器的配置文件

relay_log = relay-log
server_id = 3

然后启动从服务器

MariaDB [(none)]> start slave io_thread,sql_thread;

结束

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值