美文网首页
mysql主从服务搭建

mysql主从服务搭建

作者: Zhaozn | 来源:发表于2019-07-16 19:31 被阅读0次

    1、主mysql配置信息

    配置文件路径:/etc/mysql/mysql.conf.d/mysqld.cnf
    log_bin=‘mysql-bin’      # 必须设置、启动二进制日志
    server-id=12             #  必须设置、保证每个服务器设置id不相同
    binlog-do-db=osyunweidb  # 需要同步的数据库名称、可以写多行表示同步多个数据库
    binlog-ignore-db=mysql   # 需要忽略的数据库、不进行同步
    

    2、从mysql配置信息

    
    配置文件路径:/etc/mysql/mysql.conf.d/mysqld.cnf
    # bind-address= 127.0.0.1  # 允许外网链接
    sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION   #datetime类型可以设置为0 
    group_concat_max_len = 102400  #  拼接字符串长度 
    log_bin=‘mysql-bin2’      # 必须设置、启动二进制日志
    server-id=11              #  必须设置、保证每个服务器设置id不相同
    replicate-do-db           # 指定需要复制的数据库。 
    replicate-ignore-db       # 复制时需要排除的数据库
    

    3、设置外网主机以root身份登陆、重启主从mysql服务

     1、登陆自己机器的MySQL数据库:mysql -uroot -p密码
    设置root用户可以任意IP访问,代码如下(可选,这里%代表任意,也可以指定IP):  
    update user set host = '%' where user = 'root'; 
            
    2、GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;
            予任何主机访问数据的权限   这里youpassword  换成你的数据库登录密码
        
    3、MySQL>FLUSH PRIVILEGES;
            修改生效,这样就可以在其它任何的主机上以root身份登录啦!
    
    $sudo service mysql restart
    

    4、进入主服务器sql中 执行下面命令

    show master status\G
    
    image.png

    第一行,当前正在记录的 binarylog文件名;
    第二行,表示当前的文件偏移量,写入在上面文件的记录位置;
    第三行,表示需要记录的数据库;
    第四行,表示需要忽略的数据库;
    只有需要记录的数据库,其变化才会被写入到日志文件中。

    5、数据同步

    1、备份前先把数据库加上锁,以保证备份时不会写入新数据导致数据不一致
    
      flush tables with read lock;
    
    2、在备份服务器中新建数据库名称与主数据库相同、主服务器中执行下述命令:
      mysqldump --default-character-set=utf8mb4 --host=127.0.0.1 -ualgo_wb -palgo_wb --opt algo_wyh | mysql --host=192.168.0.106 -ualgo_wb -palgo_wb --default-character-set=utf8mb4 -C algo_wyh
    
    3、从mysql输入下述命令:
    CHANGE MASTER TO 
    MASTER_HOST='主mysql服务器的IP地址', 
    MASTER_USER='主mysql用户名', 
    MASTER_PASSWORD='主mysql密码', 
    MASTER_LOG_FILE='mysql-bin.000004', 对应主mysql中file内容
    MASTER_LOG_POS=7145;对应主mysql中position内容
    
    

    6、启动服务器slave

    1、启动slave
      start slave;
    2、停止slave
      stop slave;
    

    7、查看slave状态

    show slave status\G 
    
    image.png

    Master_host 指的是 主服务器的地址
    Master_user 指的是主sql服务器上用来复制的用户,从服务器会用此账号来登录主服务进行复制
    Master_log_file 主sql服务日志文件名
    Read_Master_log_pos 主sql日志记录位置(多少行开始), 从服务器根据日志文件名与这个记录位置选择复制的文件和位置
    Slave_IO_Running: 指的就是从服务器上负责读取主服务器的线程工作状态。 从服务器用这个专门的线程链接到主服务器上,并把日志拷贝回来。
    Slave_SQL_Running: 指的就是专门执行sql的线程。 它负责把复制回来的Relaylog执行到自己的数据库中。 这两个参数必须都为Yes 才表明复制在正常工作。

    8、取消 lock锁限制

      unlock tables;
    

    相关文章

      网友评论

          本文标题:mysql主从服务搭建

          本文链接:https://www.haomeiwen.com/subject/meztlctx.html