1 安装mariadb数据库
略
2 环境准备
主库:192.168.239.129
从库:192.168.239.130
3 主库配置文件修改
vim /etc/my.cnf
在[mysqld]标签下添加以下三条配置
log-bin=mariadblog # 打开二进制日志事件
server-id=1 # 主库标识号,可自定义
binlog-do-db=zentao # 需要进行同步的库名(前提是这个库需要真实地创建出来,且主库与从库都要有,初始数据保持一致),如不配置该项,会同步所有的库,推荐进行配置
说明:
mariadb主从复制原理:
1) master记录二进制日志。在每个事务更新数据完成之前,master在二日志记录这些改变。Mariadb将事务写入二进制日志,即使事务中的语句都是交叉执行的。在事件写入二进制日志完成后,master通知存储引擎提交事务。
2) slave将master的binary log拷贝到它自己的中继日志。首先,slave开始一个工作线程——I/O线程。I/O线程在master上打开一个普通的连接,然后开始binlog dump process。Binlog dump process从master的二进制日志中读取事件,如果已经执行完master产生的所有文件,它会睡眠并等待master产生新的事件。I/O线程将这些事件写入中继日志。
3) SQL slavethread(SQL线程)处理该过程的最后一步。SQL线程从中继日志读取事件,并重新执行其中的事件而更新slave的数据,使其与master中的数据一致。
4 从库配置文件修改
vim /etc/my.cnf
在[mysqld]标签下添加以下三条配置
server-id=2 # 从库标识号,可自定义,不能与主库相同
5 创建从库访问主库的帐户
mariadb> grant replication slave on *.* to 'slave_user'@'192.168.239.130' identified by '123456';
mariadb> flush privileges;
说明:
slave_user--帐号名称
192.168.239.130--可通过帐号slave_user访问主库的服务器
123456--slave_user帐号对应的密码
*.*--slave_user帐号可访问所有库的所有表,如要访问test_db库的test_table表,可写为test_db.test_table
6 从从库192.168.239.130登陆主库192.168.239.129
mariadb> mysql -h 192.168.239.129 -r root -p
进行远程登陆测试时,有可能登陆不成功,不继续进行下一步
7 主服务器上查看状态:
mariadb> show master status;
+-----------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB |Binlog_Ignore_DB |
+-----------------+----------+--------------+------------------+
| mariadblog.000001 | 106 | zentao | |
如果执行show master status出现提示:
show master status;
说明第3步中log-bin=mariadblog未进行配置
8 从库连接主库,在从库上执行:
mariadb> changemaster to master_host='192.168.239.129',master_user='slave_user', master_password='123456', master_port=3306,master_log_file='mariadblog.000001', master_log_pos=106,master_connect_retry=10;
mariadb> start slave;
mariadb> show slave status \G;
说明:
master_host--主库IP
master_user--在第5步创建的帐号
master_password--在第5步创建的密码
master_log_file--在第7步查询到的File
master_log_pos--在第7步查询到的Position
当执行完show slave status \G命令时,出现以下信息
***************************1. row ***************************
Slave_IO_State: Waiting formaster to send event
Master_Host: 192.168.1.201
Master_User: slave
Master_Port: 3306
Connect_Retry: 10
Master_Log_File:mariadblog.000001
Read_Master_Log_Pos: 396
Relay_Log_File:mariadb-relay-bin.000002
Relay_Log_Pos: 530
Relay_Master_Log_File:mariadblog.000001
Slave_IO_Running:Yes
Slave_SQL_Running: Yes
当Slave_IO_Running:Yes Slave_SQL_Running: Yes两项为yes时,搭建成功