zoukankan      html  css  js  c++  java
  • Mysql主从配置实战

    实战mysql主从配置

    1. 准备两个docker容器,分别在3306和3307开启两个mysql为主从数据库
    2. 可执行以下命令
    docker run -p 3306:3306 --name mysql3306 -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
    
    docker run -p 3307:3306 --name mysql3307 -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
    
    1. 现在配置mysql配置文件,在conf文件夹下创建个mysql.cnf文件,内容如下
    [mysqld]
    # mysql二进制文件取名
    log-bin=mysql-bin
    # 二进制日志的格式,有三种:statement/row/mixed
    binlog_format=mixed
    server-id=101
    

    从mysql也配置

    [mysqld]
    # mysql二进制文件取名
    log-bin=mysql-bin
    # 二进制日志的格式,有三种:statement/row/mixed
    binlog_format=mixed
    server-id=102
    
    1. 在主服务器上为从服务器分配一个账号,就像一把钥匙,从服务器拿着这个钥匙,才能到主服务器上来共享主服务器的日志文件 - 在主服务器mysql界面,输入下面语句
      GRANT replication slave ON *.* TO 'slave'@'%' IDENTIFIED BY '123456'; //最后为密码,*.*为操作的数据库和表
      
      • 主库执行
      show master status;
      
      拿到文件名和位置参数,下一步要填写
    2. 在从库执行
    stop slave;
    change master to master_host="i.tzxylao.com",master_user="slave",master_password="123456",master_log_file="mysql-bin.000001",master_log_pos=443;
    
    • 最后两项为上一步获取
    • 最后执行
    start slave;
    show slave status;
    
    1. 经过上面几部主从已经同步了,可以尝试建表,插数据了

    下面进行故障处理

    1. 假设某种原因导致主从不同步
    1.先进入主库,进行锁表,防止数据写入
    使用命令:
    
    mysql> flush tables with read lock;
    
    注意:该处是锁定为只读状态,语句不区分大小写
    
    2.进行数据备份
    把数据备份到mysql.bak.sql文件 
    [root@server01 mysql]#mysqldump -uroot -p -hlocalhost > mysql.bak.sql 
    这里注意一点:数据库备份一定要定期进行,可以用shell脚本或者python脚本,都比较方便,确保数据万无一失
    
    3.查看master 状态
    mysql> show master status; 
    +——————-+———-+————–+——————————-+ 
    | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | 
    +——————-+———-+————–+——————————-+ 
    | mysqld-bin.000001 | 3260 | | mysql,test,information_schema | 
    +——————-+———-+————–+——————————-+ 
    1 row in set (0.00 sec)
    
    4.把mysql备份文件传到从库机器,进行数据恢复
    
    使用scp命令 
    [root@server01 mysql]# scp mysql.bak.sql root@192.168.1.206:/tmp/
    
    5.停止从库的状态 
    mysql> stop slave;
    
    6.然后到从库执行mysql命令,导入数据备份
    
    mysql> source /tmp/mysql.bak.sql
    
    7.设置从库同步,注意该处的同步点,就是主库show master status信息里的| File| Position两项
    change master to master_host = ‘192.168.1.206’, master_user = ‘rsync’, master_port=3306, master_password=”, master_log_file = ‘mysqld-bin.000001’, master_log_pos=3260;
    
    8.重新开启从同步 
    mysql> start slave;
    
    9.查看同步状态 
    mysql> show slave statusG 查看:
    
    Slave_IO_Running: Yes 
    Slave_SQL_Running: Yes
    
  • 相关阅读:
    September 29th 2017 Week 39th Friday
    September 28th 2017 Week 39th Thursday
    September 27th 2017 Week 39th Wednesday
    September 26th 2017 Week 39th Tuesday
    September 25th 2017 Week 39th Monday
    September 24th 2017 Week 39th Sunday
    angular2 学习笔记 ( Form 表单 )
    angular2 学习笔记 ( Component 组件)
    angular2 学习笔记 ( Http 请求)
    angular2 学习笔记 ( Router 路由 )
  • 原文地址:https://www.cnblogs.com/sky-chen/p/10053314.html
Copyright © 2011-2022 走看看