第1步:在主/从服务器上安装MariaDB

在Master和Slave服务器上安装MariaDB。

sudo apt update
sudo apt-get install mariadb-server mariadb-client

安装MariaDB后,下面的命令可用于停止,启动和启用MariaDB服务。

在Ubuntu 16.04 LTS上运行:

sudo systemctl stop mysql.service
sudo systemctl start mysql.service
sudo systemctl enable mysql.service

在Ubuntu 18.04 LTS上运行:

sudo systemctl stop mariadb.service
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service

之后,运行以下命令,通过创建root密码并禁止远程根访问来保护MariaDB服务器。

sudo mysql_secure_installation

出现提示时,回答以下问题。

  • 输入root的当前密码(输入无):只需按Enter键
  • 设置root密码? [Y/N]:Y
  • 新密码:输入密码
  • 重新输入新密码:重复密码
  • 删除匿名用户? [Y/N]:Y
  • 远程禁止root登录? [Y/N]:Y
  • 删除测试数据库并访问它? [Y/N]:Y
  • 现在重新加载权限表? [Y/N]:Y

服务器准备

为了实现复制,我们需要两个或者更多服务器。

一台服务器将作为主服务器,另外一台作为从属服务器。

Primary = 192.168.1.1
Slave = 192.168.1.2
在Ubuntu上设置MariaDB主/从复制

第4步:设置从服务器

打开从服务器配置文件。

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

修改下面内容:

[mysqld]
#
# * Basic Settings
#
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
log-bin
bind-address            = 192.168.1.2
server_id               = 2

重新启动从服务器。

在从服务器上进行更改后,重新启动MariaDB服务器。

sudo systemctl restart mariadb.service
sudo systemctl restart mysql.service

登录到从服务器。

sudo mysql -u root -p

停止从服务:

STOP SLAVE;

配置从服务器与主服务器通信,账号是我们之前创建的。日志文件和位置是刚在主服务器中记下的。

CHANGE MASTER TO
MASTER_HOST='192.168.1.1',
MASTER_USER='replication_user',
MASTER_PASSWORD='type_replication_user_password',
MASTER_LOG_FILE='master1-bin.000001',
MASTER_LOG_POS=315;

启动从站。

START SLAVE;

运行以下SQL命令进行测试:

SHOW SLAVE STATUS \G

输出示例:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

两个Yes表示从服务器将从主服务器进行复制。配置成功。

第3步:配置MariaDB主服务器

配置主服务器,打开下面的配置文件:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

添加或者更改下面内容:

[mysqld]
#
# * Basic Settings
#
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
log-bin
bind-address            = 192.168.1.1
server_id               = 1
log-basename            = master1

进行更改后,重新启动MariaDB服务器。

sudo systemctl restart mariadb.service
sudo systemctl restart mysql.service

在配置和重新启动Master Server后,登录并创建将用于复制的用户帐户。
这些帐户将拥有用户名和密码,并由从服务器使用。

运行以下命令以登录MariaDB主服务器。

sudo mysql -u root -p

登录后,创建新帐户用于进行复制。

CREATE USER 'replication_user'@'192.168.1.2' IDENTIFIED BY 'new_password_here';

接下来,运行以下命令以授予对从服务器的完全访问权限

GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'192.168.1.2';

运行以下命令查看主服务器详细信息。

SHOW MASTER STATUS;

输出示例

MariaDB [(none)]> SHOW MASTER STATUS;
+--------------------+----------+--------------+------------------+
| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------+----------+--------------+------------------+
| master1-bin.000001 |      315 |              |                  |
+--------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
MariaDB [(none)]>

记下文件服务器的文件( master1-bin.000001)和位置(315)详细信息。

日期:2020-07-07 20:55:06 来源:oir作者:oir