在MariaDB中设置主从复制
本文将介绍如何在 MariaDB 中设置主从复制。主从复制是一种数据库复制技术,其中一个数据库服务器(称为 “主服务器”)将其更改传递给一个或多个其他数据库服务器(称为 “从服务器”)。主从复制可用于实现高可用性、负载均衡和数据备份等目的。
# 步骤
# 主机
-
使用以下命令登录到 MariaDB:
1
mysql -uroot -p
-
创建一个新的数据库并在其中创建一个新的表:
1
2
3create database db1;
use db1;
create table test1(id int,name char); -
退出 MariaDB 并停止 MariaDB 服务器:
1
2exit;
systemctl stop mariadb -
使用编辑器打开 MariaDB 的配置文件。在 CentOS 中,配置文件位于
/etc/my.cnf
,而在 Ubuntu 中,配置文件位于/etc/mysql/mariadb.conf.d/50-server.cnf
。1
2vi /etc/my.cnf # CentOS
vi /etc/mysql/mariadb.conf.d/50-server.cnf # Ubuntu -
在配置文件中添加以下内容:
1
2
3
4
5[mysqld]
log-bin=/var/log/mysql/mysql-bin.log
server-id=1
binlog-do-db=db1
bind-address=0.0.0.0上述配置文件中的关键配置包括:
log-bin
:指定二进制日志文件的路径和名称。二进制日志文件包含主服务器上进行的所有更改。server-id
:指定主服务器的唯一标识符。每个服务器必须具有唯一的标识符。binlog-do-db
:指定要在二进制日志中记录更改的数据库名称。bind-address
:指定要在哪个 IP 地址上监听连接请求。在本例中,我们将其设置为0.0.0.0
,以允许从任何 IP 地址连接到主服务器。
-
创建日志文件目录并将其所有权分配给 MySQL 用户:
1
2
3
4
5
6
7
8cd /var/log/
mkdir mysql
cd mysql/
touch mysql-bin.log
cd ../
chown -R mysql:mysql ./mysql/
ls -ld /var/log/mysql
ls -ld /var/log/mysql/mysql-bin.log上述命令将创建一个名为
mysql-bin.log
的空日志文件,并将其所有权分配给 MySQL 用户。 -
启动 MariaDB 服务器并重新登录到 MariaDB:
1
2systemctl start mariadb
mysql -uroot -p -
授予从服务器复制权限:
1
2grant replication slave on *.* to slave@'%' identified by '123456';
exit;上述命令将创建一个名为
slave
的用户,并为其授予复制权限。 -
生成当前数据库的备份:
1
2
3systemctl restart mariadb
mysqldump -uroot -p -A > all1.sql
scp all1.sql 10.1.0.16:/root上述命令将在本地生成一个名为
all1.sql
的数据库备份,并将其复制到远程服务器10.1.0.16
的/root
目录中。
# 从机
-
使用以下命令登录到从服务器:
1
2mysql -h 10.1.0.20 -uslave -p123456
exit -
将备份文件还原到从服务器中的 MariaDB:
1
2
3cd /root
mysql -uroot -p < all1.sql
mysql -uroot -p -
确认已成功复制数据库:
1
2show databases;
exit; -
停止从服务器上的 MariaDB 并编辑其配置文件:
1
2
3systemctl stop mariadb
vi /etc/my.cnf # CentOS
vi /etc/mysql/mariadb.conf.d/50-server.cnf # Ubuntu -
在配置文件中添加以下内容:
1
2[mysqld]
server-id=2上述配置文件中的关键配置是
server-id
,它指定从服务器的唯一标识符。 -
启动从服务器上的 MariaDB:
1
2systemctl start mariadb
mysql -uroot -p123456 -
在从服务器上配置主从复制:
1
2
3change master to master_host='10.1.0.20',master_user='slave',master_password='123456',master_port=3306,master_log_file='mysql-bin.000003',master_log_pos=328,master_connect_retry=10;
startslave;
show slave status \G;上述命令将从服务器配置为将来自主服务器的更改复制到本地 MariaDB 上。
change master to
命令中的参数包括:master_host
:指定主服务器的 IP 地址或主机名。master_user
:指定用于连接到主服务器的用户名。master_password
:指定用于连接到主服务器的密码。master_port
:指定主服务器的端口号。master_log_file
:指定主服务器当前正在使用的二进制日志文件的名称。master_log_pos
:指定主服务器当前正在使用的二进制日志文件中的位置。master_connect_retry
:指定从服务器在与主服务器断开连接后尝试重新连接的次数。
``start slave;
命令将从服务器上的复制进程启动。
show slave status \G;` 命令将显示有关从服务器上的复制进程的详细信息。至此,主从复制已经设置完成。主服务器上的更改将自动传播到从服务器上。