主從數據庫
Linux中,數據庫服務有三種:互為主主,互為主從,一主一從(主從數據庫)
互為主主:數據庫時時更新
互為主從:數據庫達到一定的的容量再更新
一主一從:在主數據庫上面創建的,可以同步到從數據庫;在從數據庫上面創建的,並不可以同步到主數據庫中
服務名 | mariadb |
---|---|
協議名 | mysql |
進程名稱 | mysqld |
端口號 | 3306 |
一、改主機名、寫域名解析文件
前提:首先要配好網絡,yum源
點擊查看配置網絡,yum
# 配置網絡
# (1)虛擬交換機配置為192.168.100.0網段,網絡適配器選擇僅主機模式;
# (2)編輯網絡配置文件:
[root@wzg ~]# cd /etc/sysconfig/network-scripts/
[root@wzg network-scripts]# vim ifcfg-ens33
#需要修改的參數為:
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.100.10
PREFIX=24
# (3)重啟網絡服務:
[root@wzg network-scripts]# systemctl restart network
# 配置yum源
# (1)先進入虛擬機設置,把系統鏡像連接到虛擬機的光驅上;
# (2)掛載光驅里的鏡像:
[root@wzg ~]# mount /dev/cdrom /media/
mount: /dev/sr0 is write-protected, mounting read-only
# (3)修改yum源配置文件:
[root@wzg ~]# cd /etc/yum.repos.d/
[root@wzg yum.repos.d]# ls
[root@wzg yum.repos.d]# vim local.repo
[rhel]
name=rhel
baseurl=file:///media
enabled=1
gpgcheck=0
# (4)清空yum源緩存並檢索yum源
[root@wzg yum.repos.d]# yum clean all
[root@wzg yum.repos.d]# yum repolist
注意:mysql1和mysql2都要設置主機名和域名解析
################ mysql1和mysql2 ################
# 主數據庫改為mysql1
hostnamectl set-hostname mysql1
bash
# 從數據庫改為mysql2
hostnamectl set-hostname mysql2
bash
################ mysql1 ################
# 做域名解析(兩邊都要做)
vim /etc/hosts
加入:
192.168.100.10 mysql1
192.168.100.20 mysql2
# 拷貝到mysql2
scp /etc/hosts 192.168.100.20:/etc
二、安裝服務
注意:mysql1和mysql2都要安裝
################ mysql1和mysql2 ################
# 安裝數據庫軟件包
yum -y install mariadb mariadb-server
# 啟動數據庫服務
systemctl start mariadb
# 設置為開機自啟
systemctl enable mariadb
三、初始化數據庫
注意:mysql1和mysql2都要初始化,並且要先啟動才能初始化
################ mysql1和mysql2 ################
# 初始化數據庫
mysql_secure_installation
回車 #默認為設置密碼
y #設置密碼?密碼設置為000000
y #移除匿名用戶?
n #不允許root遠程登錄?
y #移除測試數據庫?
y #重新加載數據庫?
四、修改配置文件
分別修改mysql1和mysql2的配置文件
################ mysql1 ################
# 編輯配置文件
vi /etc/my.cnf
加入:
[mysqld]
log-bin = mysql-bin #設置為主數據庫(也就是以二進制加載日志文件)
server-id = 10 #根據IP的最后一個字段
# 重啟數據庫服務
systemctl restart mariadb
# 配置防火牆
firewall-cmd --permanent --add-service=mysql
firewall-cmd --reload
################ mysql2 ################
# 編輯配置文件
vi /etc/my.cnf
加入:
[mysqld]
server-id = 20
# 重啟數據庫服務
systemctl restart mariadb
五、設置數據庫權限
分別設置mysql1和mysql2的數據庫權限
################ mysql1 ################
# 進入數據庫
mysql -uroot -p000000
# 設置權限(授權,復制權限)
grant all privileges on *.* to root@'%' identified by "000000";
grant replication slave on *.* to 'user'@'mysql2' identified by '000000';
################ mysql2 ################
# 進入數據庫
mysql -uroot -p000000
# 設置權限(從庫連接主庫)
grant all privileges on *.* to root@'%' identified by "000000";
change master to master_host='mysql1',master_user='user',master_password='000000';
六、啟動從數據庫
在mysql2上:
################ mysql2 ################
# 啟動從數據庫
start slave;
# 查看狀態
show slave status\G
# 可以看到Slave_SQL_Running: Yes,表示已開啟從數據庫
七、驗證主從數據庫
在mysql1上創建數據庫,然后在mysql2上查看是否同步
################ mysql1 ################
# 查看當前的數據庫
show databases;
# 創建一個新的(class)庫
create database class;
# 進入class數據庫
use class;
# 創建一個student表
create table student(ID int not null primary key,name varchar(20));
# 在表中插入一條數據
insert into student values(001,"wzg");
################ mysql2 ################
# 查看當前的數據庫(可以看到上面創建的class庫)
show databases;
# 進入class數據庫
use class;
# 查看class庫中的表(可以看到上面創建的student表)
show tables;
# 查看student表的具體信息(可以看到上面插入的一條數據)
select * from student;
# 退出數據庫quit或ctrl+C鍵
聲明:未經許可,禁止轉載