千家信息网

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

发表于:2024-11-28 作者:千家信息网编辑
千家信息网最后更新 2024年11月28日,一、准备(主从都需要配置): yum -y install mysql mysql-server #安装mysql yum -y install ntpdate
千家信息网最后更新 2024年11月28日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                    #添加为系统服务  chkconfig  mysqld on                 #开启默认运行级别                二、主服务器配置:主配置文件默认为:/etc/my.cnf    [mysqld]  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;    #查看用户                                三、从服务器配置:    [mysqld]    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:        [mysqld]                                #添加内容        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:                                   [mysqld]                                #添加内容        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的位置                  


0