阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS下MySQL安装与主从同步配置详解

218次阅读
没有评论

共计 4848 个字符,预计需要花费 13 分钟才能阅读完成。

CentOS MySQL 安装
MySQL (Master/Slave) 主从同步

1、为什么要使用主从同步

1. 如果主服务器出现问题,可以快速切换到从服务器提供的服务
2. 可以在从服务器上执行查询操作,降低主服务器的访问压力
3. 可以在从服务器上执行备份,以避免备份期间影响主服务器的服务

注意:一般只有更新不频繁的数据或者对实时性要求不高的数据可以通过从服务器查询,实时性要求高的数据仍然需要从主服务器获得。

Windows 数据库主从(Master/Slave)同步安装与配置详解  http://www.linuxidc.com/Linux/2017-11/148520.htm

2、CentOS 安装 Mysql 5.7.19

CentOS 7.3 安装 MySQL 并修改初始密码  http://www.linuxidc.com/Linux/2017-11/148522.htm

Windows 安装 MySQL 并修改初始密码  http://www.linuxidc.com/Linux/2017-11/148521.htm

3、测试环境

我这里使用 parallels desktop 虚拟机安装的 Centos 操作系统
数据库版本:5.7.19
主机 A:10.211.55.3(Master)
主机 B:10.211.55.4(Slave)

 
service mysqld stop # 停止数据库
service mysqld start # 启动数据库 
service mysqld restart # 重启数据库

CentOS 下 MySQL 安装与主从同步配置详解

4、配置主服务器 Master

4.1 给从服务器设置授权用户(创建复制帐号)

建立一个帐户 javen,并且只能允许从 10.211.55.4 这个地址上来登陆,密码是 123456。

 
mysql> grant replication slave on *.* to 'javen'@'10.211.55.4' identified by '123456';
mysql> flush privileges;

4.2 主服务器 Master 配置

etc/my.cnf[mysqld] 下添加如下内容

 
port=3306
 #[必须]启用二进制日志
binlog-ignore-db=mysql 
#[必须]服务器唯一 ID,默认是 1 
server-id= 1
# 只保留 7 天的二进制日志,以防磁盘被日志占满
expire-logs-days  = 7 
# 不备份的数据库
binlog-ignore-db=information_schema
binlog-ignore-db=performation_schema
binlog-ignore-db=sys
binlog-ignore-db=gogs

4.3 重启 MySQL 服务并设置读取锁定

service mysqld restart

在主服务器上设置读取锁定有效,确保没有数据库操作,以便获得一个一致性的快照

 
mysql -u root -proot -P3306
mysql> flush tables with read lock;

4.4 查看主服务器上当前的二进制日志名和偏移量值

 
mysql> show master status;
+------------------+----------+--------------+-------------------------------------------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB                                      | Executed_Gtid_Set |
+------------------+----------+--------------+-------------------------------------------------------+-------------------+
| mysql-bin.000001 |      154 |              | mysql,information_schema,performation_schema,sys,gogs |                   |
+------------------+----------+--------------+-------------------------------------------------------+-------------------+
1 row in set (0.00 sec)

CentOS 下 MySQL 安装与主从同步配置详解

这里的 File、Position 是在配置 Salve 的时候要使用到的,Binlog_Do_DB 表示要同步的数据库,Binlog_Ignore_DB 表示 Ignore 的数据库,这些都是在配置的时候进行指定的。

另外:如果执行这个步骤始终为 Empty set(0.00 sec),那说明前面的 my.cnf 没配置对。

5、配置从服务器 Slave

5.1 修改从数据库的配置

修改之后完整的配置如下:

 
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

## 以下是添加的内容

log-bin=mysql-bin
server-id=3
binlog-ignore-db  = mysql
binlog-ignore-db  = information_schema
binlog-ignore-db  = performation_schema
binlog-ignore-db  = sys
log-slave-updates
slave-skip-errors=all
slave-net-timeout=60

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

5.2 重启从数据库并设置 Slave 数据库

service mysqld restart

登录从数据库并做如下设置

 
mysql> stop slave;  # 关闭 Slave
mysql> change master to master_host='10.211.55.3',master_user='javen',master_password='123456',master_log_file='mysql-bin.000001', master_log_pos= 154;
mysql> start slave;  # 开启 Slave

注意:在这里指定 Master 的信息,master_log_file 是在配置 Master 的时候的 File 选项,master_log_pos 是在配置 Master 的 Position 选项,这里要进行对应。
### 5.3 查看 Slave 配置的信息

 
mysql> show slave status \G;
*************************** 1. row ***************************
               Slave_IO_State:
                  Master_Host: 10.211.55.3
                  Master_User: javen
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 154
               Relay_Log_File: centos-linux-2-relay-bin.000001
                Relay_Log_Pos: 4
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: No
            Slave_SQL_Running: No
              Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 154
              Relay_Log_Space: 154
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 0
                  Master_UUID:
             Master_Info_File: /var/lib/mysql/master.info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State:
           Master_Retry_Count: 86400
                  Master_Bind:
      Last_IO_Error_Timestamp:
     Last_SQL_Error_Timestamp:
               Master_SSL_Crl:
           Master_SSL_Crlpath:
           Retrieved_Gtid_Set:
            Executed_Gtid_Set:
                Auto_Position: 0
         Replicate_Rewrite_DB:
                 Channel_Name:
           Master_TLS_Version:
1 row in set (0.00 sec)

ERROR:
No query specified

mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)

mysql>  start slave;
Query OK, 0 rows affected (0.00 sec)

mysql>

6、关闭掉主数据库的读取锁定

mysql> unlock tables;
  • 1

7、在主数据库中创建一个表以及添加数据测试

CentOS 下 MySQL 安装与主从同步配置详解

CentOS 下 MySQL 安装与主从同步配置详解

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-11/148524.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计4848字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中