Mysql主从复制,读写分离

Mysql-Proxy 安装运行
直接进行解压创建就行 通用二进制安装

MySql 进入以后
show databases 展现所有的数据库
use mysql 进入mysql 的管理数据库
show tables 展现数据库中的表
查看数据库中所有的用户
select host ,user ,password from user 展示用户表中的表

空串比对象更加的节省性能
delete form user where password=”; 要想删除其他没有用的用户就用这个
is not allowed to connect to this mysql server
表示不允许
update user set host=’192.168.9.168’ 设置可以链接
flush privileges; 刷新权限

Mysql-proxy 需要配置用户
mysql的Lua脚本
proxy-backend-addresses 可读可
keepalive Z
0.8.2 没有读写的功能
VMware
链接克隆 在快照的基础上进行各自的修改
完全克隆

MySql 主从复制的配置过程
1.双发的Mysql尽量一个版本, 如果不一致的话,主的要低于从的

从哪里开始复制

    1.都从0开始
    2. 主服务器已经运行一段时间,并且存在不小的数据集,
      把主服务器备份,然后在从服务器恢复,从主服务器上备份时所处的位置开始复制

配置过程:
主服务器
1.改server-id

2.启用二进制日志
3.创建有复制权限的账号
从服务器器
1.改server-id
2.启用中继日志
3.指向主服务器
4.启动复制线程

主从复制的具体操作

 1.修改/etc/my.conf ,添加如下的连个配置,第一个是添加服务器的id 第二个是添加日志文件
  server-id=1
  log-bin=mysql-bin
 2.验证mySql 主从服务器是否正确
  show VARIABLES  like 'server_id'
       +---------------+-------+
        | Variable_name | Value |
        +---------------+-------+
        | server_id     | 136   |
        +---------------+-------+
   查看主服务的信息
        show master status
          +------------------+----------+--------------+------------------+
        | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
        +------------------+----------+--------------+------------------
        | mysql-bin.000046 |      326 |              |                  |
          +------------------+----------+--------------+------------------+
 3.在从服务器上进行配置复制的信息
          change master to 
          master_host='192.168.9.136',
          master_user='root',
          master_password='root',  
          master_log_file='mysql-bin.000046',
          master_log_pos=326;
 4.启动 slave
         start slave;
 5.查看从服务器的状态
       show slave status\G ;表示展示从服务器的配置信息。 \G 表示的是格式化信息, 一定要注意这里使用的是反斜杠
      如果看到Slave_IO_Running与Slave_SQL_Running值都是YES ,就可以认为是启动正常
 6.在主库中创建库,表,数据,然后在从数据库中查看

双主结构:

双主模型,设定的自动增长的属性,以避免冲突

 如果要想配置主结构仅仅需要从第三步重新开始配置一遍主的mysql,然后进行转换

MariaDB [(none)]> grant replication slave ,replication client on . TO ‘repluser’@’192.168.%.%’ IDENTIFIED BY ‘replpass’;

MariaDB [(none)]> flush Privileges;

relay_log 中继日志

show global variables like ‘%relay_log%’

二进制日志理论

二进制日志默认是在数据目录下
**查看二进制日志文件使用mysqlbinlog mysql-bin.00004.log**
二进制日志文件基于两种方式记录日志
1.第一种是基于时间 160708 2016年7月8日
2.第二种是基于空间 at  通过show master status 来查看下一个执行的位置(position)
二进制日志文件增删改查的日志
mysql-bin.001保留了
手动滚动日志,如果重启mysql 的话也会滚动二进制日志
flush  log 主要是滚动二进制日志和中继日志
show binary logs 查看mysql可以管理的二进制日志文件
同样也可清除二进制日志节约空间
   二进制日志文件的作用
   1.即时点恢复
   2.复制(主从复制)
Mysql-bin.index 表示二进制文件的索引,如果二进制日志文件夹中有某个文件,但是mysql-bin.index 索引文件中没有记录的同样也不会进行管理。因此尽量不要手动删除二进制日志文件。

mysql 记录二进制日志的格式

  基于语句statement 
  基于行row
  基于混合模式 mixed

mysqlbinlog
–starttime
–stoptime
–strat-position
–stop-position
show binlog events in ‘log_file’

mysql –start-position=66761 mysql-bin.00001> /tmp/a.sql
二进制日志文件的格式
事件的位置:当前位置的结束相当于下一个事件的开始

log-bin ON 二进制日志文件是否启用,同时也可以是文件的路径

注意:切勿将二进制日志与数据文件放在同一设置中。
很多时候mysql默认的配置不适合生产环境的应用

中继日志:中继日志主要用于从服务器.意思就是说:中继日志仅仅是从主服务器读取二进制日志文件然后再保存到从服务器的文件就是中继日志。
relay——log 主服务器默认的情况下是没有启动的,从服务器默认是开启的。
relay_log_purge ON 自动删除不需要的中继日志,默认是开启的

备份和恢复

  1.备份的目的是用于恢复
  备份的分类
     物理备份backup 直接复制数据文件的方式 physical backup
     逻辑备份:把数据从从数据提取出来保存为文本文件 logical backup .如果二进制日志文件超过10G不适合
   2.备份工具
  mysqldump 逻辑备份工具 可以对InnoDB热备
           备份和恢复过程较慢 他是单线程
  mysqldumper    多线程的mysqldump 他是多线程的
没法做增量备份和差量备份

lvm-snapshoot
 他是物理备份,很难实现增量备份,但是复制和恢复速度较快

 mysqldump 使用时在5G以下,比较高性能的服务器可以达到10G以下
man mysqldump
 mysqldump使用的格式
 mysqldump [option] dbname 
--导出导入的具体实现
 //先创建数据库,然后再进行把hdb.sql导入到数据库中
mysql -uroot -hlocalhost hdb < /tmp/hdb.sql
备份数据可以
mysqldump -uroot -hlocalhost -p hellodb > /tmp/hdb.sql
这种方式mysql中必须有该库,如果没有将不能运行
备份单个库的话
      mysqldump 【option】     
 mysqldump --all-databases>/tmp/all.sql 备份所有的数据库 

all-database 备份所有的数据库
databases db1,db2:备份多个数据库。此时不需要mysql 中有此数据库

注意前:备份前需要对表进行加锁
mysqldump lock-tables 备份前锁住指定的表
mysqldump–lock-all-tables 备份前锁住所有的表
加锁之后所有写的操作将会阻塞
mysqldump –databases hdb –lock-all-tables>/tmp/zuo.sql 只要使用databases 就可以不使用在导入数据前必须有此库

如果是InnoDB引擎的话,可以启动一个大的事物,
single-transaction:能够对InnoDB存储引擎实现热备

用来备份 事件调度器
–routines:备份存储过程和存储函数
–triggers 备份触发器
备份时滚动日志

flush-logs: 备份前,请求到所致后滚动日志
master

恢复:

复制时的同步位置标记
 --master-data=[0|1|2]
 0 :不记录
1:记录为Change Master语句
2: 记录为注释的Change Master语句

使用mysqldump备份的注意事项
请求锁
滚动日志
选定要备份的库

即时点还原

  help flush 
  flush table 表示刷写所有的表-意思:是把所有在缓冲区上的表保存到磁盘上面
  show table status from test\G; 显示表的框架
  Flush tables with read lock 刷新所有缓冲区上的表并添加数据库上所有表 读的锁,此时将会阻塞所有的的操作
  unlock tables 释放所有表中的锁
       1.首先让Mysql服务器离线



      2.[root@zdc ~]# mysqldump -uroot -proot -hlocalhost --databases test --lock-all-tables --flush-logs --master-data=2 > /tmp/test.4.sql 
         查看/tmp/test.4.sql 会发现有一句
    -- CHANGE MASTER TO MASTER_LOG_FILE='OFF.000011', MASTER_LOG_POS=353; 就是OFF.000011文件中 position 位置是353  开始进行备份


    3.[root@zdc ~]# mysqlbinlog --start-position=353 --stop-position=988 /var/lib/mysql/OFF.000011  //查看限定的位置

    4.[root@zdc ~]# mysqlbinlog --start-position=353 --stop-position=988 /var/lib/mysql/OFF.000011 > /tmp/test.6.inc.sql 导出来指定位置的文件


    5.查看当前的master的状态
    MariaDB [(none)]> show master status;
    +------------+----------+--------------+------------------+
    | File       | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------+----------+--------------+------------------+
    | OFF.000013 |      353 |              |                  |
    +------------+----------+--------------+------------------+
    6.关掉二进制日志文件set session sql_log_bin=0; 只对当前会话生效

    7.source  /tmp/test.5.sql  //执行 这样的话就恢复了原来的数据库
    MariaDB [test]> show master status;
    +------------+----------+--------------+------------------+
    | File       | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------+----------+--------------+------------------+
    | OFF.000013 |      353 |              |                  |
    +------------+----------+--------------+------------------+
    8.source /tmp/test.6.inc.sql 进行增量备份
     查看二进制日志文件的位置没有变化 MariaDB [test]> show master status;
     +------------+----------+--------------+------------------+
    | File       | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------+----------+--------------+------------------+
    | OFF.000013 |      353 |              |                  |
    +------------+----------+--------------+------------------+

    9.恢复二进制日志文件set session sql_log_bin=1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值