苍天有泪 发表于 2018-10-9 06:04:12

mysql主从和mysql主主和半同步复制

一、准备(主从都需要配置):  
    yum -y install mysql mysql-server#安装mysql
  
yum -y install ntpdate#安装时间同步
  
echo '*/1 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null' >>/var/spool/cron/root#配置网络时间同步
  
service mysqld start#启动服务
  
chkconfig --add mysqld#添加为系统服务
  
chkconfigmysqld on#开启默认运行级别
  

  
二、主服务器配置:主配置文件默认为:/etc/my.cnf
  
   
  
datadir=/var/lib/mysql
  
socket=/var/lib/mysql/mysql.sock
  
user=mysql
  
symbolic-links=0
  
log-bin=master-bin#开启二进制日志文件
  
server-id=1#设置服务器id,保证全局唯一
  
sync-binlog=1            #全局唯一的server-id
  
innodb-flush-logs-at-trx-commit=1
  
innodb-support-xa=1
  

  
service mysqld restart#重启动服务
  

  
mysql> show global variables like '%server%';      #数据库id
  
mysql> show master logs;      #查看数据库二进制日志
  
mysql> show master status;    #查看主服务器状态,记住二进制日志名,配置从服务器会用
  
mysql> grant replication slave,replication client on *.* to'copy'@'192.168.0.50' identified by '123.com';
  
      #授权192.168.0.50主机上的copy用户对所有库有复制权限
  
mysql> select Host,User,Password from mysql.user;#查看用户
  
三、从服务器配置:
  
   
  
    datadir=/var/lib/mysql
  
    socket=/var/lib/mysql/mysql.sock
  
    user=mysql
  
    symbolic-links=0
  
    relay-log=slave-log#启用中继日志
  
    server-id=10#服务器id,全局唯一
  
    read-only=1#将服务器设置为只读模式(对拥有root权限的用户无效)
  
    service mysqld restart#重启动服务
  

  
    mysql> change master to master_host='192.168.0.10',master_user='copy',
  
         master_password='123.com',master_log_file='master-bin.000001',master_log_pos=590;
  master_host                #主服务器地址
  master_user                #拥有复制权限的用户
  master_password            #密码
  master_log_file            #从哪个二进制日志开始复制
  master_log_pos             #从二进制日志的什么位置开始复制
  
    mysql> start slave;#开启从服务器
  
    mysql> show slave status\G;#查看从服务器状态
  
四、验证主从:
  
    主服务器:
  
      mysql> create database db_test;#创建数据库
  
    从服务器:
  mysql> show databases;    #查看服务器是否同步
  

  

  
五、主主复制
  
    服务器A:
  
      #添加内容
  log-bin=master-bin#启用二进制日志
  relay-log=slave-log#启用中继日志
  server-id=1#服务器id,全局唯一
  auto-increment-offset=1#自增列起始
  auto-increment-increment=2#自增列一次步进(例:1,3,5,7,9...)
  
    mysql> grant replication slave,replication client on *.* to'copy'@'192.168.0.50' identified by '123.com';
  
    mysql> change master to master_host='192.168.0.50',master_user='copy',
  
          master_password='123.com',master_log_file='master-bin.000001',master_log_pos=106;
  

  
    mysql> start slave;
  
    mysql> show slave status\G;
  
    服务器B:
  
      #添加内容
  
      log-bin=master-bin
  relay-log=slave-log
  server-id=10
  auto-increment-offset=2#自增列起始
  auto-increment-increment=2#自增列一次步进(例:2,4,6,8,10...)
  

  
      mysql> grant replication slave,replication client on *.* to'copy'@'192.168.0.10' identified by '123.com';
  mysql> change master to master_host='192.168.0.10',master_user='copy',
  master_password='123.com',master_log_file='master-bin.000003',master_log_pos=106;
  mysql> start slave;
  mysql> show slave status\G;
  
六、半同步复制
  
    要想使用半同步复制,必须满足以下几个条件:
  
      1. MySQL 5.5及以上版本
  2. 变量have_dynamic_loading为YES
  3. 异步复制已经存在
  
    主:
  mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';#安装插件
  mysql> show plugins;#查看插件是否安装成功
  mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;#启用半同步
  mysql> show status like 'Rpl_semi_sync_master_status';#查看是否在运行
  
    从:
  mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';#安装插件
  mysql> show plugins;
  mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;#启用半同步
  mysql> STOP SLAVE#关闭复制线程
  mysql> START SLAVE #开启复制线程
  mysql> show status like 'Rpl_semi_sync_slave_status';#查看是否在运行
  mysql> show variables like '%Rpl%';#查看和半同步相关的服务器变量
  rpl_semi_sync_master_enabled#是否启用半同步
  rpl_semi_sync_master_timeout#等待超时时间
  rpl_semi_sync_master_wait_for_slave_count
  #需要等待多少个slave应答,才能返回给客户端
  mysql> show status like '%Rpl_semi%';#半同步状态
  Rpl_semi_sync_master_clients#当前半同步复制从的个数
  
七、和复制相关的文件
  
    从节点:
  
      master.info:用于保存slave连接至master时的相关信息(账号,密码,服务器地址,复制的二进制文件等)
  relay-log.info:保存当前slave节点上已经复制到的二进制文件位置,和relay-log的位置
  

  



页: [1]
查看完整版本: mysql主从和mysql主主和半同步复制