• mysql高级用法(1)- mariadb的主从搭建


    Mariadb介绍:

      mariadb是mysql的一个分支,需要进一步了解的参考:https://mariadb.org/

      安装参考教程:window版安装:Mariadb 介绍 1 (安装)

             linux版安装    :centos7 yum安装mysql | mariaDb

           补充: mysql的主从复制(master-slave),我就以mariadb来进行演示了

    Mariadb主从复制:

      1> 基本原理:

        

        MySQL之间数据复制的基础是二进制日志文件(binary log file)。一台MySQL数据库一旦启用二进制日志后,其作为master,它的数据库中所有操作都会以“事件”的方式记录在二进制日志中,其他数据库作为slave通过一个I/O线程与主服务器保持通信,并监控master的二进制日志文件的变化,如果发现master二进制日志文件发生变化,则会把变化复制到自己的中继日志中,然后slave的一个SQL线程会把相关的“事件”执行到自己的数据库中,以此实现从数据库和主数据库的一致性,也就实现了主从复制。

      2> 实现MySQL主从复制需要进行的配置:

        1> 准备两台服务器  

          master    192.168.248,147   /linux  (centos7)

          slave       192.168.248.148  /linux  (centos7)

          

    centos7 安装mariadb后,默认无密码登录
    
    1> mysql -uroot -p  回车
    2> use mysql;  切换到mysql数据库
    3> update user set password=password("自定义密码") where user='root'; 
    4> flush privileges; 刷新生效

        2> 配置主服务器  (147 服务器)

    1> 修改配置文件:
    [mysqld]
    log-bin=mysql-bin #开启二进制日志
    server-id=1 #设置server-id
    2> 重启mysql,创建用于同步的用户账号
    mysql> CREATE USER 'huhy'@'192.168.248.147' IDENTIFIED BY 'huhy';#创建用户
    mysql> GRANT REPLICATION SLAVE ON *.* TO 'huhy'@'192.168.248.147';#分配权限
    mysql>flush privileges;   #刷新权限
    3> 查看master状态,记录二进制文件名(mysql-bin.000001)和位置(569):
    SHOW MASTER STATUS;

       3>从服务器slave修改:

        

    从服务器配置:
    1>my.cnf配置文件,添加server-id
    [mysqld]
    server-id=2 #设置server-id,必须唯一
    
    2>重启mysql,打开mysql会话,执行同步SQL语句(需要主服务器主机名,登陆凭据,二进制文件的名称和位置):
    
    CHANGE MASTER TO MASTER_HOST='192.168.248.147',MASTER_USER='huhy',MASTER_PASSWORD='huhy', MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=569;
    3> 启动同步进程:
      start slave; 【stop slave】
    4> 查看slave状态: 
        show slave statusG;

    注意:这个当其中两个都是yes的时候代码同步开启成功。  

      问题:这个可能会出现个问题, Slave_IO_Running: Connecting  连接问题: 如下:
        

      产生这个问题的原因是我们创建的同步用户无法进行远程连接,从服务器无法连接到主服务器:

      grant all privileges on *.* to huhy@'%'identified by 'huhy';   授权后即可   

      flush privileges;  刷新权限

     执行后即可完成同步 

    补充:可以再my.cnf中设置同步哪些数据库:

    # 不同步哪些数据库  
    binlog-ignore-db = mysql  
    
      
    # 只同步哪些数据库,除此之外,其他不同步  
    binlog-do-db = test  

    测试:

      

       


    到这mysql的主从复制已经搞好了,有不理解的可以一起讨论

  • 相关阅读:
    vue input输入框验证10的n次方
    Django2.2使用mysql数据库pymysql版本不匹配问题的解决过程与总结
    数据结构(四):树
    数据结构(三):队列
    数据结构(二):栈
    数据结构(一):链表
    python深拷贝与浅拷贝
    python yield、yield from与协程
    python __getattribute__、__getattr__、__setattr__详解
    python迭代、可迭代对象、迭代器及生成器
  • 原文地址:https://www.cnblogs.com/huhongy/p/11206724.html
Copyright © 2020-2023  润新知