• Linux下 Mysql 互为主从


    系统环境:CentOS 6.5
    master1:192.168.100.204
    master2:192.168.100.205
    mysql版本:mysql-5.6.19
    注:mysql的5.5以下的版本和5.5以上的版本配置方法不一样

    以下两个节点安装
    1:防火墙打开相应端口
    #  /sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
    #  /etc/rc.d/init.d/iptables save

    2:安装相关依赖包
    #  yum -y install gcc gcc-c++ ncurses ncurses-devel openssl openssl-devel cmake perl lsof bison

    3:删除自带的mysql
    #  rpm -qa|grep mysql
    #  rpm -e --allmatches --nodeps mysql-libs-5.1.71-1.el6.x86_64

    4:创建相关目录
    #  mkdir /doiido/soft
    #  mkdir -p /doiido/mysql/data/

    5:创建mysql用户
    #  /usr/sbin/groupadd mysql
    #  /usr/sbin/useradd -s /sbin/nologin -M -g mysql mysql
    #  chown -R mysql:mysql /doiido/mysql/ 

    6:安装mysql
    #  cd /doiido/soft
    #  tar -zxvf mysql-5.6.19.tar.gz
    #  cd mysql-5.6.19
    #  cmake -DCMAKE_INSTALL_PREFIX=/doiido/server/mysql -DMYSQL_DATADIR=/doiido/mysql/data -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DSYSCONFDIR=/etc/ -DWITH_SSL=yes -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_READLINE=on
    #  make && make install

    7:修改相关目录权限并创建软连接
    #  chmod +w /doiido/server/mysql
    #  chown -R mysql:mysql /doiido/server/mysql/ 
    #  ln -s /doiido/server/mysql/lib/lib* /usr/lib/
    #  ln -s /doiido/server/mysql/bin/mysql /usr/bin

    8:修改配置文件
    #  cp /doiido/server/mysql/support-files/my-default.cnf /etc/my.cnf
    #  vi /etc/my.cnf

    [mysqld]character-set-server = utf8
    default-storage-engine = MyISAM
    basedir = /doiido/server/mysql
    datadir = /doiido/mysql/data
    log-error = /doiido/mysql/mysql_error.log
    pid-file = /doiido/mysql/mysql.pid
    max_allowed_packet = 32M
    explicit_defaults_for_timestamp = true 


    9:安装mysql数据库
    #  /doiido/server/mysql/scripts/mysql_install_db --basedir=/doiido/server/mysql --datadir=/doiido/mysql/data --user=mysql

    10:设置mysql开机自动启动服务
    #  cp /doiido/server/mysql/support-files/mysql.server /etc/init.d/mysqld
    #  chkconfig --add mysqld
    #  chkconfig --level 345 mysqld on 

    11:修改mysqld文件并启动mysql
    #  vi /etc/init.d/mysqld

    #修改mysqld文件中的下面两项basedir=/doiido/server/mysql
    datadir=/doiido/mysql/data

    #  service mysqld start

    12:创建需同步的数据库
    #  mysql -uroot -p
    mysql>  create database doiido;
    mysql>  GRANT ALL PRIVILEGES ON doiido.* TO doiido@"%" IDENTIFIED BY 'doiido123';
    mysql>  exit

    --------------------以下在服务器master1上操作
    修改配置文件
    #  vi /etc/my.cnf

    [mysqld]#默认是1,master和slave不能相同即可
    server-id=1
    log-bin=bin.log
    port=3306
    binlog-do-db =doiido
    #要复制的数据库
    replicate-do-db =doiido


    重启mysql
    #  service mysqld restart

    建立用于同步的账户
    #  mysql -uroot -p
    mysql>  grant replication slave on *.* to 'dodo'@'192.168.100.205' identified by 'jjjjjj';

    查看File对应值,并记录下来
    mysql>  show master status;

    +------------------+----------+--------------+------------------+-------------------+| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    +------------------+----------+--------------+------------------+-------------------+
    | bin.000001       |      120 | doiido       |                  |                   |
    +------------------+----------+--------------+------------------+-------------------+

    mysql>  exit

    --------------------以下在服务器master2上操作
    2.修改slave上的配置文件my.cnf
    #  vi /etc/my.cnf

    [mysqld]server-id=2
    port=3306
    log-bin=bin.log
    binlog-do-db =doiido
    replicate-do-db =doiido


    重启mysql
    #  service mysqld restart

    在从服务器上建立相应的数据库
    #  mysql -uroot -p

    将192.168.100.204设置为自己的主服务器
    mysql>  CHANGE MASTER TO 
    MASTER_HOST='192.168.100.204',MASTER_PORT=3306,
    MASTER_USER='dodo', 
    MASTER_PASSWORD='jjjjjj', 
    MASTER_LOG_FILE='bin.000001',
    MASTER_LOG_POS=120;

    启动从服务器复制功能
    mysql>  start slave;

    mysql>  show slave status\G;

    ...................Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
    ...................

    注:

    #Slave_IO_Running:连接到主库,并读取主库的日志到本地,生成本地日志文件
    #Slave_SQL_Running:读取本地日志文件,并执行日志里的SQL命令。
    上面两个必须都是yes,其中一个NO均属错误

    mysql>  exit

    至此,单向主从配置完毕,如需要互为主从则配置如下

    --------------------以下在服务器master2上操作
    建立用于同步的账户
    #  mysql -uroot -p
    mysql>  grant replication slave on *.* to 'dodo'@'192.168.100.204' identified by 'jjjjjj';


    查看File对应值,并记录下来
    mysql>  show master status;

    +------------------+----------+--------------+------------------+-------------------+| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    +------------------+----------+--------------+------------------+-------------------+
    | bin.000001       |      649 | doiido       |                  |                   |
    +------------------+----------+--------------+------------------+-------------------+
    1 row in set (0.00 sec)

    mysql>  exit

    --------------------以下在服务器master1上操作
    将192.168.100.205设置为自己的主服务器
    mysql>  CHANGE MASTER TO  
    MASTER_HOST='192.168.100.205', 
    MASTER_PORT=3306,
    MASTER_USER='dodo', 
    MASTER_PASSWORD='jjjjjj', 
    MASTER_LOG_FILE='bin.000001',
    MASTER_LOG_POS=649;

    启动从服务器复制功能

    mysql>  start slave;

    mysql>  show slave status\G;

    ...................Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
    ...................

    上面两个必须都是yes,其中一个NO均属错误
     

    mysql>  exit

    至此互为主从配置完毕

  • 相关阅读:
    vue全局事件总线
    千兆光模块和万兆光模块的区别?
    解决Ubuntu18.04安装好搜狗输入法后无法打出中文的问题
    SPI和API还在傻傻分不清楚?
    【笔记】The art of research(明白问题的重要性)
    arcgis如何给没有连通的路打交点
    Leetcode2909. 元素和最小的山形三元组 II
    远程仓库地址改变后更换url
    maven项目、idea抽风问题解决
    FreeRTOS个人笔记-FreeRTOSConfig.h
  • 原文地址:https://blog.csdn.net/apple_51426592/article/details/127385122