配置MariaDB主从复制
- 格式:pdf
- 大小:65.86 KB
- 文档页数:3
5-配置MariaDB主从复制
第五章 配置MariaDB主从复制
一、概述
MySQL主从复制结构是基于mysql bin-log日志基础上,从库通过打开IO进程收到主库的bin-log日志增量信息,并保存
到本地relay log,而后再通过打开MYSQL进程从relay log上获取的增量信息并翻译成SQL语句后写到从数据库。
主从复制结构,实际上可以实现两个功能:
1.从库充当主库的数据库备份实例
2.读写分离,主库负责正常读写数据,从库只负责读数据
实际生产环境,因为很多应用实际读数据库的次数远大于写数据库的次数,所以在项目开发初期,编写程序时做一
个判断,对所有读的操作全部推到从库,若从库无法获取数据,则再向主库获取数据,从而在一定意义上实现读写分
离,缓解主库的IO压力。
所以生产环境下推荐使用这种架构。
二、配置主服务器
[root@db1 ~]# vim /etc/my.cnf.d/mariadb-server.cnf
[server]
log-bin=mysql-bin
server-id=101
[root@db1 ~]# systemctl restart mariadb
[root@db1 ~]# mysql -u root -p
Enter password:
MariaDB [(none)]> grant replication slave on *.* to replica@'%' identified by 'password';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit
Bye
三、配置从服务器
1、在db2.example.com安装MariaDB
[root@db2 ~]# yum -y install mariadb mariadb-server
[root@db2 ~]# systemctl start mariadb
[root@db2 ~]# systemctl enable mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to
/usr/lib/systemd/system/mariadb.service.
[root@db2 ~]# mysql_secure_installation
[root@db2 ~]# systemctl restart mariadb
2、修改配置文件
[root@db2 ~]# vim /etc/my.cnf.d/mariadb-server.cnf
[server]
log-bin=mysql-bin
server-id=102
read_only=1
report-host=db2.example.com
[root@db2 ~]# systemctl restart mariadb
四、实现主从复制
1、在Master主机获取Dump数据
[root@db1 ~]# mysql -u root -p
锁定表
MariaDB [(none)]> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)
查看状态 (记住文件名, Position的数值)
MariaDB [(none)]> show master status;
2、导出数据库
新开一个终端敲下面的命令,不要退出
[root@db1 ~]# mysqldump -u root -p --all-databases --lock-all-tables --events > mysql_dump.sql
Enter password:
3、上一步执行完后,在之前的终端中解锁
MariaDB [(none)]> unlock tables;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit
4、将数据库信息发到slave主机上
[root@db1 ~]# scp mysql_dump.sql db2.example.com:/tmp/
5、导入来自Master的数据
[root@db2 ~]# mysql -u root -p < /tmp/mysql_dump.sql
Enter password:
6、配置master信息
[root@db2 ~]# mysql -u root -p
Enter password:
MariaDB [(none)]> change master to
-> master_host='192.168.115.100', Master主机的地址
-> master_user='replica', 复制的用户
-> master_password='password', 密码
-> master_log_file='mysql-bin.000001', 之前的文件名
-> master_log_pos=609; 之前的position值
Query OK, 0 rows affected (0.24 sec)
7、启动复制
MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.00 sec)
8、查看状态
MariaDB [(none)]> show slave status\G
内容较长,自行观赏
9、验证
在master就是db1上新创建一个数据库test,然后去db2上查看
[root@db1 ~]# mysql -u root -predhat123
MariaDB [(none)]> create database test;
到db2上查看
MariaDB [(none)]> show databases;
test数据库已经被同步过来了