一、数据库安装
在内存为8G的服务器上安装MySQL5.7,主数据库服务器IP为192.168.2.221,从数据库服务器IP为192.168.2.222 。在Ubuntu系统中,可使用以下命令进行安装:
1
| sudo apt-get install mysql-server
|
二、主数据库配置
- 修改配置文件:编辑
/etc/mysql/my.cnf
文件,添加或修改以下配置:
1 2 3 4 5 6 7
| [mysqld]
server_id = 1
binlog-do-db = test log_bin = mysql-bin
|
server_id
:每个参与复制的MySQL服务器都必须有唯一的server_id
,主库设置为1 。binlog-do-db
:指定需要记录二进制日志的数据库,这里设置为test
数据库。log_bin
:指定二进制日志文件的名称前缀。
- 添加同步用户:进入MySQL数据库,执行以下命令添加用于主从同步的用户:
1 2
| mysql>create user 'repl'@'%' identified by 'password'; mysql>grant replication slave on *.* to 'repl'@'%';
|
create user 'repl'@'%' identified by 'password';
:创建一个名为repl
,允许从任何主机连接(@'%'
),密码为password
的用户。grant replication slave on *.* to 'repl'@'%';
:授予repl
用户在所有数据库(*.*
)上的复制从权限。
- 记录master信息:在MySQL命令行中执行以下命令,记录主库的
File
和Position
信息:
1
| mysql>show master status\G
|
示例输出:
1 2 3 4 5 6
| ***************** 1. row ***************** File: mysql-bin.000001 Position: 154 Binlog_Do_DB: test Binlog_Ignore_DB: Executed_Gtid_Set:
|
File
的值mysql-bin.000001
和Position
的值154
在后续从库配置中会用到。
- 重启数据库:执行以下命令重启MySQL服务,使配置生效:
1
| sudo /etc/init.d/mysql restart
|
三、从数据库配置
- 修改配置文件:编辑从库的
/etc/mysql/my.cnf
文件,添加或修改以下配置:
1 2 3 4 5 6
| [mysqld]
server_id = 2
replicate-do-db = test
|
server_id
:从库的server_id
设置为2,与主库的server_id
不同。replicate-do-db
:指定需要复制的数据库为test
。
- 配置slave:进入从库的MySQL数据库,执行以下命令配置从库连接主库:
1 2
| mysql>change master to master_host='192.168.2.221',master_port=3306,master_user='repl',master_password='password',master_log_file='mysql-bin.000001',master_log_pos=154; mysql>start slave;
|
change master to...
:配置从库连接主库的参数,包括主库的IP地址(master_host
)、端口(master_port
)、同步用户名(master_user
)、密码(master_password
)以及主库二进制日志文件名称(master_log_file
)和位置(master_log_pos
)。这些参数的值来源于主库show master status
的输出。start slave;
:启动从库的复制线程。
- 重启数据库并检查状态:
1
| sudo /etc/init.d/mysql restart
|
- 再次进入MySQL数据库,执行以下命令检查从库状态:
1
| mysql>show slave status\G;
|
示例输出中有以下关键信息表示连接成功:
1 2 3 4
| Slave_IO_State: Waiting for master to send event Slave_IO_Running: Yes Slave_SQL_Running: Yes Seconds_Behind_Master: 0
|
四、批量插入性能测试
使用以下批量插入语句进行性能测试:
1
| insert into mt_data(mac,time,device_id,intensity,ap_mac,channel,virtual_type)values(……)*n
|
当n
为300时,每秒能够插入达到35000条数据,这展示了在该主从数据库架构下的批量插入数据的性能表现。