博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql主从配置
阅读量:5870 次
发布时间:2019-06-19

本文共 5511 字,大约阅读时间需要 18 分钟。

mysql 主从

MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步。

  • MySQL主从是基于binlog的,主上须开启binlog才能进行主从

    • binlog,其实就是一个文件,文件里记录了一些日志,文件是 二进制文件,无法cat
  • 主从过程大致有3个步骤:

    • 主将更改操作记录到 binlog 里
    • 从将主的binlog事件(sql语句)同步到本机上并记录在 relaylog(中继日志) 里
    • 从根据 relaylog 里面的sql语句按顺序执行
  • mysql主从共有三个线程

    • mysql 主从共有三个线程。主上有一个log dump 线程,用来和从的I/O 线程传递binlog;
    • 从上有两个线程,其中I/O 线程用来同步主的binlog并生成relaylog,另外一个sql线程用来把relaylog 里面的sql语句落地
  • mysql 主从原理图

pILg1S.jpg

  • mysql 主从应用场景

1、数据备份,主机器宕机,从机器还能随时供服务

2、作为一个从库,读的库,减轻主库的压力,数据备份且可以分担主机器被调用数据时的压力,mysql主从,是有方向性的,写数据,必须从主机器开始;如果不依照原理会导致数据紊乱。

准备工作

两台机器都安装并启动mysql。

配置主

编辑/etc/my.cnf配置文件[root@localhost ~]# vim /etc/my.cnf……server-id=131// 自定义log_bin=testlinux// 指定log前缀重启mysql服务[root@localhost ~]# /etc/init.d/mysqld restartShutting down MySQL.. SUCCESS! Starting MySQL. SUCCESS![root@localhost ~]# ls -l /data/mysql-rw-rw----. 1 mysql mysql      120 1月  23 21:00 testlinux.000001-rw-rw----. 1 mysql mysql       19 1月  23 21:00 testlinux.index// 此时,/data/mysql目录下会产生两个新的文件// 之后还会生成更多以testlinux开头的文件// 这些文件都非常重要,是实现主从的根本,没有这些文件主从也无法完成创建一个数据库为实验做准备[root@localhost ~]# mysql -uroot -p......MySQL > create database testlinux;Query OK, 1 row affected (0.00 sec)// 二进制文件testlinux.000001 大小增加,它里面记录了数据库的创建过程。创建一个用于同步数据的用户[root@localhost ~]# mysql -uroot -p......mysql> grant replication slave on *.* to 'repl'@'192.168.159.132' identified by '112233';Query OK, 0 rows affected (0.01 sec)// IP为“从”的IPmysql> flush tables with read lock;Query OK, 0 rows affected (0.12 sec)// 锁定数据表(目的是暂时使其不能继续写,保持现有状态用于同步)mysql> show master status;+-------------------+----------+--------------+------------------+-------------------+| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+-------------------+----------+--------------+------------------+-------------------+| testlinux.000001  |   441    |              |                  |                   |+-------------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)#记住file和position(设置主从同步时会使用)
  • 备份主库中的所有数据库

    [root@localhost ~]# mysqldump -uroot -p112233 test > /tmp/test.sql

    [root@localhost ~]# mysqldump -uroot -p112233 zrlog > /tmp/zrlog.sql

    [root@localhost ~]# mysqldump -uroot -p112233 testlinux > /tmp/testlinux.sql

配置从

[root@localhost ~]# vim /etc/my.cnf……server-id=130……// 增加一个sever-id 和主不一样就行重启mysql[root@localhost ~]# /etc/init.d/mysqld restartShutting down MySQL.. SUCCESS! Starting MySQL. SUCCESS!将主中备份的数据库发送到从中[root@localhost ~]# scp 192.168.159.131:/tmp/*.sql /tmp/The authenticity of host '192.168.159.131 (192.168.159.131)' can't be established.ECDSA key fingerprint is b2:66:7f:db:00:38:59:11:9e:75:75:02:fd:7a:95:d7.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added '192.168.159.131' (ECDSA) to the list of known hosts.root@192.168.159.131's password: testlinux.sql                                                                        100%    0     0.0KB/s   00:00    test.sql                                                                             100%    0     0.0KB/s   00:00    zrlog.sql                                                                            100%    0     0.0KB/s   00:00    创建库[root@localhost ~]# mysql -uroot -pEnter password: Welcome to the MySQL monitor. ......mysql> create database testlinux;Query OK, 1 row affected (0.00 sec)mysql> create database test;Query OK, 1 row affected (0.00 sec)mysql> create database zrlog;Query OK, 1 row affected (0.00 sec)恢复数据库[root@localhost ~]# mysql -uroot -p159820 test < /tmp/test.sql[root@localhost ~]# mysql -uroot -p159820 zrlog < /tmp/zrlog.sql[root@localhost ~]# mysql -uroot -p159820 testlinux < /tmp/testlinux.sql// 该过程要保证主从数据库内容一致实现主从同步[root@localhost ~]# mysql -uroot -p.....mysql> stop slave;Query OK, 0 rows affected, 1 warning (0.06 sec)mysql> change master to master_host='192.168.159.131',master_user='repl',master_password='112233',master_log_file='testlinux.000001',master_log_pos=441;Query OK, 0 rows affected, 2 warnings (0.02 sec)// IP为主的IP;file、pos分别为主的filename和position。mysql> start slave;Query OK, 0 rows affected (0.00 sec)判断主从是否配置成功mysql> show slave status\G...... Slave_IO_Running: Yes Slave_SQL_Running: Yes Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it......解锁主库的表(在主上操作)[root@localhost ~]# mysql -uroot -p......mysql> unlock tables;Query OK, 0 rows affected (0.00 sec)......

测试主从

  • 主上几个配置参数(在/etc/my.cnf中配置)

    • binlog-do-db= 仅同步指定的库
    • binlog-ignore-db= 忽略指定的库
  • 从上几个配置参数(在/etc/my.cnf中配置)

    • replicate_do_db= 同步指定的库
    • replicate_ignore_db= 忽略指定的库
    • replicate_do_table= 同步指定的表
    • replicate_ignore_table= 忽略指定的表

    • replicate_wild_do_table= 如aming.%,支持通配符
    • replicate_wild_ignore_table= 所有的忽略

注意: 进行从服务器的配置时尽量使用参数“replicatewild”,使匹配更精确,提升使用性能。

  • 测试

    主服务器:

    mysql> show tables;
    +---------------------------+
    | Tables_in_adaitest |
    +---------------------------+
    | columns_priv |
    | db |
    | event |
    +---------------------------+

    删除表:

    mysql> drop table db;
    mysql> show tables;
    +---------------------------+
    | Tables_in_adaitest |
    +---------------------------+
    | columns_priv |
    | event |
    +---------------------------+

    从服务器:

    主服务器删除表之前:
    mysql> show tables;
    +---------------------------+
    | Tables_in_adaitest |
    +---------------------------+
    | columns_priv |
    | db |
    | event |
    +---------------------------+

    主服务器删除表之后:

    mysql> show tables;
    +---------------------------+
    | Tables_in_adaitest |
    +---------------------------+
    | columns_priv |
    | event |
    +---------------------------+

本文转自 豆渣锅 51CTO博客,原文链接:http://blog.51cto.com/754599082/2064416

转载地址:http://uzanx.baihongyu.com/

你可能感兴趣的文章
关于 error: LINK1123: failure during conversion to COFF: file invalid or corrupt 错误的解决方案...
查看>>
hexo博客解决不蒜子统计无法显示问题
查看>>
python实现链表
查看>>
java查找string1和string2是不是含有相同的字母种类和数量(string1是否是string2的重新组合)...
查看>>
Android TabActivity使用方法
查看>>
Eclipse的 window-->preferences里面没有Android选项
查看>>
《麦田里的守望者》--[美]杰罗姆·大卫·塞林格
查看>>
遇到的那些坑
查看>>
央行下属的上海资信网络金融征信系统(NFCS)签约机构数量突破800家
查看>>
[转] Lazy evaluation
查看>>
常用查找算法总结
查看>>
grep 零宽断言
查看>>
被神话的大数据——从大数据(big data)到深度数据(deep data)思维转变
查看>>
修改校准申请遇到的问题
查看>>
Linux 进程中 Stop, Park, Freeze【转】
查看>>
文件缓存
查看>>
远程协助
查看>>
Scrum实施日记 - 一切从零开始
查看>>
关于存储过程实例
查看>>
配置错误定义了重复的“system.web.extensions/scripting/scriptResourceHandler” 解决办法...
查看>>