一、安装MySQL
1.1 在主库和从库上都安装MySQL服务器和客户端
# Centos系统安装MySQL
yum -y install mysql mysql-server mysql-devel
# Ubuntu系统安装MySQL
apt-get update
apt-get install mysql-server mysql-client libmysqlclient-dev
1.2 配置MySQL
修改MySQL配置文件my.cnf,启用binlog功能,设置server-id,修改字符集等。
# CentOS系统
vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
# 开启binlog功能
log-bin=mysql-bin
binlog-format=ROW
# 设置server-id,唯一标识一个MySQL实例
server-id=1
# 设置默认字符集为utf8
character-set-server=utf8
# Ubuntu系统
vi /etc/mysql/my.cnf
[mysqld]
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
# 开启binlog功能
log-bin=mysql-bin
binlog-format=ROW
# 设置server-id,唯一标识一个MySQL实例
server-id=1
# 设置默认字符集为utf8
character-set-server=utf8
1.3 重启MySQL服务
systemctl restart mysqld
二、主从同步配置
2.1 创建用于从库连接的用户
在主库上创建用于从库连接的用户,并授权该用户访问所有数据库。
# 登录MySQL
mysql -u root -p
# 创建用户repl,并授权访问所有数据库
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
2.2 查看主库状态
登录主库,查看主库状态。
mysql -u root -p
# 查看主库状态
show master status\G;
记录下 File 和 Position 值,这两个值将用于从库复制数据。
2.3 配置从库
在从库上配置,修改my.cnf文件,开启relay log记录功能,设置从库与主库的同步参数,启动从库复制进程。
# 修改my.cnf配置文件
vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
# 开启relay log记录功能
relay-log=mysql-relay-bin
log-slave-updates=1
# 设置server-id,唯一标识一个MySQL实例
server-id=2
# 设置默认字符集为utf8
character-set-server=utf8
# 配置从库与主库的同步参数
# 将主库中的File和Position值替换成自
以上是部署步骤。
以下是验证主从同步是否正常的步骤:
- 在主库上创建一个数据库和表,并插入一些数据:
mysql -u root -p
CREATE DATABASE testdb;
USE testdb;
CREATE TABLE testtable (id INT NOT NULL AUTO_INCREMENT, name VARCHAR(20), PRIMARY KEY (id));
INSERT INTO testtable (name) VALUES ('Alice'), ('Bob'), ('Charlie');
2.在从库上查询刚刚创建的数据库和表:
mysql -u root -p
SHOW DATABASES;
USE testdb;
SELECT * FROM testtable;
如果从库能够查询到主库创建的数据库和表,并且表中有数据,就说明主从同步已经成功。可以通过在主库上插入数据来验证同步是否正常,如果从库中能够查询到新插入的数据,就说明同步正常。
另外,也可以通过查看主从库的日志文件和进程来验证同步是否正常。在主库上执行 SHOW MASTER STATUS
命令,查看主库的 binlog 文件名和位置,然后在从库上执行 SHOW SLAVE STATUS
命令,查看从库的日志文件名和位置是否与主库一致。如果一致,说明同步正常。
如果同步出现了问题,可以查看从库的错误日志和主库的binlog来定位问题。