mariadb数据库搭建一主一从

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时,搭建成功

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章