zoukankan      html  css  js  c++  java
  • mysql 主从实现

    主库:192.168.1.19

    从库:192.168.1.20

    开启db_test单库复制

    常见问题

    参考文档

    主配置 

    • 以mysql root用户登录,用下面sql创建专门用于主从复制的mysql用户repl,并授权给从库20,密码是mysql

    grant replication slave on *.* to 'repl'@'192.168.1.19' identified by 'mysql';

    flush privileges;

    • 再修改mysql配置文件,开启主库binlog输出

    cd /opt/svr/mariadb5/etc

    vi my.cnf

    打开binlog某些配置项,即开启主库的写binlog配置,调整过的参数如下:

    log-bin=/opt/dbdat/mariadb5_data3306/log/mysql-bin #binlog存放路径
    log-bin-index=/opt/dbdat/mariadb5_data3306/log/mysql-bin.index 
    binlog-do-db = db_test #只开启db_test库的复制,其他库不复制
    binlog-format=row #行模式复制

    • 保存并重启mysql,查看下面目录已生成binlog文件:

    /opt/dbdat/mariadb5_data3306/log/mysql-bin

    mysql-bin.000001 mysql-bin.index

    • 也可以通过下面sql查询主库复制状态

    show master status;

    从配置

    • 连接主库

    通过下面sql连接主库,注意其中的用户密码,以及binlog文件名、读binlog的位置(可通过上面show master status;sql查询master最新位置)

    执行sql:change master to master_host='192.168.1.19', master_user='repl', master_password='mysql', master_log_file='mysql-bin.000001', master_log_pos=0;

    • 开启slave复制

    执行sql: slave start

    • 查看slave状态

    执行sql:show slave status G;

    • 查看slave配置参数

    执行sql:show variables like "%slave%";

    常见问题

    • slave不稳定,容易失效,经常要手工启动
      测试过程中,需要先执行下面sql连接主库
      slave stop;
      change master to master_log_file='mysql-bin.000005', master_log_pos=83773;
      slave start;

    • 发现下面一些情况需要手工启动slave
      在主库、备库drop某些表
      当主库有某张表,但从库没有,通过java插入、查询该表时,也会造成slave停止
      当master binlog postion与slave 读取的位置不一致时,要重新按照新的位置连接master,并重启slave
    • 参考文档
    现主要从事PHP、Uinx/Linux、C/C++等方面的项目开发。
  • 相关阅读:
    linux 解压文件
    linux 文件夹操作
    adb 安装apk报INSTALL_FAILED_NO_MATCHING_ABIS
    Android Tab类型主界面 Fragment+TabPageIndicator+ViewPager
    Android 图表
    Android Manifest文件
    BroadcastReceiver介绍
    Android dimen
    Android Dialog
    Android 获取加速传感器的值,并去除杂音
  • 原文地址:https://www.cnblogs.com/lsl8966/p/4179500.html
Copyright © 2011-2022 走看看