zoukankan      html  css  js  c++  java
  • Mysql 主从复制

    mysql主从复制好处:
    1. 如果是单个数据库,如果挂了就凉凉
    2.主备数据库,挂了一台主库,我可能还有很多个备用的数据库
    2,读和写分开,减少了数据库的压力

    实验准备:
    主机一(主) : 192.168.11.70
    主机二(从): 192.168.11.224
    都装有Mariadb

    第一步-主机的操作:

    1.在matser主库上的操作,开启主库功能
    先关闭服务
    systemctl stop mariadb
    编辑/etc/my.cnf
    写入如下信息

    [mysqld]
    server-id=10  # 这个id是自己定义的
    log-bin=clare-logbin  # 自定义日志输出名
    

    启动服务systemctl start mariadb

    **2.在主库创建用户,用于同步数据 **
    create user clare@'%' identified by '1210';
    授予普通用户slave的身份
    grant replication slave on *.* to 'clare'@'%';

    3.锁定数据库的库表,禁止写入
    这个命令是全局读锁定,执行了命令之后所有库所有表都被锁定只读。
    一般都是用在数据库联机备份,这个时候数据库的写操作将被阻塞,
    读操作顺利进行。
    flush table with read lock;
    解锁语句是:UNLOCK TABLES;

    4记录下主库的状态,记录下,日志文件的名字,和位置
    show master status;

    5.导出主库的数据, 并发送给从机
    mysqldump -u root -p --all-databases > /tmp/db.sql
    远程传输主库的数据,给从库,进行导入
    scp /tmp/db.sql root@192.168.11.224:/tmp/

    主机到这里就不要动了,去操作从机

    2,配置从机

    在从库slave机器的配置如下

    1.在从库的 /etc/my.cnf中添加参数,添加只读参数

    [mysqld]
    server-id=3 #这个id是自己定义的
    read-only=true # 设定只读
    

    然后重启服务:
    systemctl restart mariadb
    2, 导入数据
    数据导入,方式有很多种
    第一种:
    在mysql中ource /tmp/db.sql;

    第二种
    在linux中:
    mysql -uroot -p < /tmp/db.sql

    第三种
    navicat

    第四种,如果你数据量特别大的话,使用第三方工具
    如xtrabackup

    3,复制修改并执行这条命令
    以root用户进入mysql 执行

    change master to master_host='192.168.11.70',  # 主机id
    master_user='clare',  # 主数据库的用户名
    master_password='1210', # 主数据库的密码
    master_log_file='clare-logbin.000002',  # 监听的主机的日志
    master_log_pos=626;   # 主机日志的位置
    

    然后开启slave模式
    start slave;

    5.检查slave机器的主从是否正确
    show slave statusG 查看主从同步是否正确

    确保如下两条参数,是yes,即主从复制正确

     Relay_Master_Log_File: clare-logbin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
    

    6.此时mariadb数据库退出root用户,使用普通用户配置,因为root身份权限太大,无法达到read-only效果
    6.此时mariadb数据库退出root用户,使用普通用户配置,因为root身份权限太大,无法达到read-only效果
    6.此时mariadb数据库退出root用户,使用普通用户配置,因为root身份权限太大,无法达到read-only效果

    7.此时在主库写入数据,查看从库是否正确同步
    解锁主库的锁,写入数据,查看从库是否同步
    unlock tables;

    8.从库只能读取数据,并且同步主库,即为正常

    9.完成主从同步,读写分离!!!!

  • 相关阅读:
    (转)使用Regex.Replace只替换字符串一次
    转:div超出范围显示省略号
    ibatis This SQL map does not contain a MappedStatement
    ibatis 多表关联
    ibatis 传入xml Hashtable的应用以及动态字段出错的解决方法
    前台学习过程
    转:C#动态循环生成button怎么分别写他们的事
    在oracle DB 中通过JOB 调用存储过程
    sybase与oracle存储过程的写法对比
    游标Oracle游标使用大全
  • 原文地址:https://www.cnblogs.com/qq752059037/p/10274221.html
Copyright © 2011-2022 走看看