Mysql 9.4主从复制部署(传统文件日志位置mysqldump)
本文介绍如何配置MySQL主从复制过程。
1. 部署规划
本过程演示了使用多台主机部署实例,这些实例分别命名为dbserver01、dbserver02。
实例 | ip | OS | 描述 |
dbserver01 | 192.168.1.10 | CentOS Stream release 9 | 主节点 |
dbserver02 | 192.168.1.13 | CentOS Stream release 9 | 从节点 |
2. 修改服务器配置
在三台服务器上分别修改服务器名称为dbserver01,dbserver02,dbserver03
hostnamectl set-hostname dbserver01
hostnamectl set-hostname dbserver02
hostnamectl set-hostname dbserver03
在三台服务器上修改
vi /etc/hosts
192.168.1.10 dbserver01
192.168.1.13 dbserver02
禁止selinux
vi /etc/sysconfig/selinux
禁止防火墙
systemctl stop firewalld
systemctl disable firewalld
3. 安装mysql
Mysql安装方法有好多种,本案为了实现MGR,采用基于RPM的Linux发行版上安装MySQL,使用下载的Oracle提供RPM包。以下步骤需要在3台服务器上执行。
(1)首先下载mysql-9.4.0-1.el9.x86_64.rpm-bundle.tar到本地服务器。
(2)解压安装文件
tar xvf mysql-9.4.0-1.el9.x86_64.rpm-bundle.tar
(3)安装
yum install mysql-community-client-plugins-9.4.0-1.el9.x86_64.rpm -y
yum install mysql-community-common-9.4.0-1.el9.x86_64.rpm -y
yum install mysql-community-icu-data-files-9.4.0-1.el9.x86_64.rpm -y
yum install mysql-community-libs-9.4.0-1.el9.x86_64.rpm -y
yum install mysql-community-devel-9.4.0-1.el9.x86_64.rpm -y
yum install mysql-community-client-9.4.0-1.el9.x86_64.rpm -y
yum install mysql-community-server-9.4.0-1.el9.x86_64.rpm -y
(4)启动数据库
systemctl start mysqld
(5)从/var/log/mysqld.log中获得root用户登录mysql,更改root用户名密码
mysql> alter user root@localhost identified by 'password';
mysql> flush privileges;
4. 主库配置
(1)修改参数文件:
vi /etc/my.cnf
character_set_server=utf8mb4
secure_file_priv=''
server-id = 1
log-bin = mysql-bin
binlog_format=row
skip-name-resolve
binlog-ignore-db = mysql
binlog-ignore-db = information_schema
binlog-ignore-db = performance_schema
binlog-ignore-db = sys
replicate_ignore_db=information_schema
replicate_ignore_db=performance_schema
replicate_ignore_db=mysql
replicate_ignore_db=sys
report_host=192.168.1.10
(2)创建复制用户
mysql> CREATE USER 'repl'@'192.168.1.13' IDENTIFIED BY 'password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.13';
mysql> flush privileges;
(3)从主库获取复制二进制日志位置
执行flush tables with READ LOCK语句来刷新所有表和块写入
mysql> FLUSH TABLES WITH READ LOCK;
使用SHOW BINARY LOG STATUS语句确定当前二进制日志文件名和位置。
mysql> SHOW BINARY LOG STATUS\G
二进制日志文件是DBSERVER01-bin.000003,位置是158。
(4)使用mysqldump在现有源数据库中创建数据的快照
mysqldump --all-databases --source-data > dum_fulldatabase.db
(5)用scp命令复制dum_fulldatabase.db到从库服务器上
scp dum_fulldatabase.db root@192.168.1.13:/opt
(6)释放读取锁
mysql> unlock tables;
5.从库配置
(1)修改参数文件:
vi /etc/my.cnf
character_set_server=utf8mb4
secure_file_priv=''
server-id = 2
log-bin = mysql-bin
binlog_format=row
skip-name-resolve
binlog-ignore-db = mysql
binlog-ignore-db = information_schema
binlog-ignore-db = performance_schema
binlog-ignore-db = sys
replicate_ignore_db=information_schema
replicate_ignore_db=performance_schema
replicate_ignore_db=mysql
replicate_ignore_db=sys
report_host=192.168.1.13
(2)重启mysqld服务
systemctl restart mysqld
(3)用mysql命令运行转储文件,导入数据库
[root@DBSERVER02 ~]# mysql -uroot -p< /opt/dum_fulldatabase.db
(3)登录mysql,设置master配置
mysql> CHANGE REPLICATION SOURCE TO SOURCE_HOST='192.168.1.10', SOURCE_USER='repl',SOURCE_PASSWORD='password', SOURCE_LOG_FILE='DBSERVER01-bin.000003',SOURCE_LOG_POS=158;
(4)启动复制
mysql> start replica;
(5)查看复制状态
mysql> start replica;
(6)查看复制master信息
(7) 查看master配置信息
mysql> select * from mysql.slave_master_info\G
(8)查看中继日志ralay_log信息
mysql> select * from mysql.slave_relay_log_info\G
7. 测试数据同步
(1)在主库创建testdb,表test1,并插入数据
mysql> create database testdb;
mysql> create table test1(id int);
mysql> insert into test1 values(1);
(2)在从库上查询
mysql> use testdb;
mysql> select * from test1;
可以看到数据已经同步到从库。