欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Linux安裝Mysql8.0.20并配置主從復制(一主一從,雙主雙從)

 更新時間:2024年06月04日 11:36:53   作者:C3Stones  
本文主要介紹了Linux安裝Mysql8.0.20并配置主從復制,包含一主一從和雙主雙從,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

1. 主從復制解釋

將主數(shù)據(jù)庫的增刪改查等操作記錄到二進制日志文件中,從庫接收主庫日志文件,根據(jù)最后一次更新的起始位置,同步復制到從數(shù)據(jù)庫中,使得主從數(shù)據(jù)庫保持一致。

2. 主從復制的作用

  • 高可用性:主數(shù)據(jù)庫異??汕袚Q到從數(shù)據(jù)庫
  • 負載均衡:實現(xiàn)讀寫分離
  • 備份:進行日常備份

3. Mysql主從復制過程

Binary log:主數(shù)據(jù)庫的二進制日志;Relay log:從服務器的中繼日志。

復制過程:
  (1)主數(shù)據(jù)庫在每次事務完成前,將該操作記錄到binlog日志文件中;
  (2)從數(shù)據(jù)庫中有一個I/O線程,負責連接主數(shù)據(jù)庫服務,并讀取binlog日志變化,如果發(fā)現(xiàn)有新的變動,則將變動寫入到relay-log,否則進入休眠狀態(tài);
  (3)從數(shù)據(jù)庫中的SQL Thread讀取中繼日志,并串行執(zhí)行SQL事件,使得從數(shù)據(jù)庫與主數(shù)據(jù)庫始終保持一致。

注意事項:
  (1)涉及時間函數(shù)時,會出現(xiàn)數(shù)據(jù)不一致。原因是,復制過程的兩次IO操作和網(wǎng)絡、磁盤效率等問題勢必導致時間戳不一致;
  (2)涉及系統(tǒng)函數(shù)時,會出現(xiàn)不一致。如:@@hostname,獲取主機名稱,主從數(shù)據(jù)庫服務器名稱不一致導致數(shù)據(jù)不一致;
  (3)......

4. 一主一從配置

服務器劃分

服務器IP角色
192.168.133.129Master1
192.168.133.130Slave1

主數(shù)據(jù)庫安裝

# 進入目錄
cd /opt

# 下載安裝包
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz

# 解壓
tar -xvf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz

# 拷貝到/usr/local
mv /opt/mysql-8.0.20-linux-glibc2.12-x86_64 /usr/local

# 進入/usr/local
cd /usr/local

# 修改名稱為mysql-8.0.20
mv mysql-8.0.20-linux-glibc2.12-x86_64 mysql-8.0.20

# 創(chuàng)建存放數(shù)據(jù)文件夾
mkdir /usr/local/mysql-8.0.20/data

# 創(chuàng)建用戶及用戶組
groupadd mysql
useradd -g mysql mysql

# 授權
chown -R mysql.mysql /usr/local/mysql-8.0.20

# 初始化數(shù)據(jù)庫(記錄臨時密碼)
cd /usr/local/mysql-8.0.20/

./bin/mysqld --user=mysql --lower-case-table-names=1 --basedir=/usr/local/mysql-8.0.20/ --datadir=/usr/local/mysql-8.0.20/data/ --initialize ;

# 配置my.cnf
vi /etc/my.cnf

# 清空,使用下面內容
// 文件內容開始

[mysqld]
basedir=/usr/local/mysql-8.0.20
datadir=/usr/local/mysql-8.0.20/data
character-set-server=utf8
lower-case-table-names=1
default_authentication_plugin=mysql_native_password

# 主從復制-主機配置
# 主服務器唯一ID
server-id=1
# 啟用二進制日志
log-bin=mysql-bin
# 設置不要復制的數(shù)據(jù)庫(可設置多個)
binlog-ignore-db=sys
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
# 設置需要復制的數(shù)據(jù)庫(可設置多個)
binlog-do-db=test
# 設置logbin格式
binlog_format=STATEMENT

// 文件內容結束

# 建立Mysql服務
cp -a ./support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
chkconfig --add mysql

# 檢查服務是否生效
chkconfig --list mysql

# 啟動、停止、重啟
service mysql start
service mysql stop
service mysql restart

# 創(chuàng)建軟連接
ln -s /usr/local/mysql-8.0.20/bin/mysql /usr/bin 

# 登錄(使用臨時密碼)
mysql -uroot -p

# 修改密碼
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new password';

# 退出,使用新密碼登錄
quit
mysql -uroot -p

# 修改root權限,增加遠程連接
use mysql
update user set host ='%' where user='root';
alter user 'root'@'%' identified with mysql_native_password by 'new password';
flush privileges;

# 退出
quit

從數(shù)據(jù)庫安裝

和主數(shù)據(jù)庫安裝一致,但配置文件內容不同。

# 配置my.cnf
vi /etc/my.cnf

# 清空,使用下面內容
// 文件內容開始

[mysqld]
basedir=/usr/local/mysql-8.0.20
datadir=/usr/local/mysql-8.0.20/data
character-set-server=utf8
lower-case-table-names=1
default_authentication_plugin=mysql_native_password

# 主從復制-從機配置
# 從服務器唯一ID
server-id=2
# 啟用中繼日志
relay-log=mysql-relay

// 文件內容結束

關閉主從數(shù)據(jù)庫服務器防火墻或開放3306端口

# 查看防火墻狀態(tài)
systemctl status firewalld

# 關閉防火墻
systemctl stop firewalld

主從數(shù)據(jù)庫測試是否已經(jīng)可以遠程訪問

# 主數(shù)據(jù)庫服務器測試從數(shù)據(jù)庫
mysql -uroot -p -h192.168.133.130 -P3306

# 從數(shù)據(jù)庫服務器測試主數(shù)據(jù)庫
mysql -uroot -p -h192.168.133.129 -P3306

主數(shù)據(jù)庫創(chuàng)建用戶slave并授權

# 登錄
mysql -uroot -p

# 創(chuàng)建用戶
create user 'slave'@'%' identified with mysql_native_password by 'password';

# 授權
grant replication slave on *.* to 'slave'@'%';

# 刷新權限
flush privileges;

從數(shù)據(jù)庫驗證slave用戶是否可用

復制代碼 代碼如下:
mysql -uslave -p -h192.168.133.129 -P3306

主數(shù)據(jù)庫查詢服務ID及Master狀態(tài)

# 登錄
mysql -uroot -p

# 查詢server_id是否可配置文件中一致
show variables like 'server_id';

# 若不一致,可設置臨時ID(重啟失效)
set global server_id = 1;

# 查詢Master狀態(tài),并記錄 File 和 Position 的值
show master status;

# 注意:執(zhí)行完此步驟后退出主數(shù)據(jù)庫,防止再次操作導致 File 和 Position 的值發(fā)生變化

從數(shù)據(jù)庫中設置主數(shù)據(jù)庫

# 登錄
mysql -uroot -p

# 查詢server_id是否可配置文件中一致
show variables like 'server_id';

# 若不一致,可設置臨時ID(重啟失效)
set global server_id = 2;

# 設置主數(shù)據(jù)庫參數(shù)
change master to master_host='192.168.133.129',master_port=3306,master_user='slave',master_password='password',master_log_file='mysql-bin.000002',master_log_pos=156;

# 開始同步
start slave;

# 若出現(xiàn)錯誤,則停止同步,重置后再次啟動
stop slave;
reset slave;
start slave;

# 查詢Slave狀態(tài)
show slave status\G

# 查看是否配置成功
# 查看參數(shù) Slave_IO_Running 和 Slave_SQL_Running 是否都為yes,則證明配置成功。若為no,則需要查看對應的 Last_IO_Error 或 Last_SQL_Error 的異常值。

測試

通過工具連接主從數(shù)據(jù)庫或者在服務器連接。

注意:主數(shù)據(jù)庫的配置文件中配置了需要同步的數(shù)據(jù)庫,因此只會同步配置的數(shù)據(jù)庫,不配置則同步全部。

# 在主數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫test
create database test;

# 從數(shù)據(jù)庫查看
show databases;

# 在主數(shù)據(jù)庫創(chuàng)建表
use test;
create table t_user(id int, name varchar(20));

# 插入數(shù)據(jù)
insert into t_user values(1, 'C3Stones');

# 在從數(shù)據(jù)庫查看
use test;
select * from t_user;

# 其他刪改查操作請自行測試

5. 雙主雙從配置

雙主雙從即兩臺主機分別存在兩臺從機,每臺從機只復制對應的主機,兩臺主機互為主備。

服務器劃分

服務器IP角色
192.168.133.129Master1
192.168.133.130Slave1
192.168.133.131Master2
192.168.133.132Slave2

安裝數(shù)據(jù)庫請參考上述安裝主數(shù)據(jù)庫
四個配置文件替換如下:

(1)Mater1

[mysqld]
basedir=/usr/local/mysql-8.0.20
datadir=/usr/local/mysql-8.0.20/data
character-set-server=utf8
lower-case-table-names=1
default_authentication_plugin=mysql_native_password

# 主從復制-主機1配置
# 主服務器唯一ID
server-id=1
# 啟用二進制日志
log-bin=mysql-bin
# 設置不要復制的數(shù)據(jù)庫(可設置多個)
binlog-ignore-db=sys
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
# 設置需要復制的數(shù)據(jù)庫(可設置多個)
binlog-do-db=test
# 設置logbin格式
binlog_format=STATEMENT
# 寫入操作更新二進制日志文件
log-slave-updates
# 自增長字段起始值,默認值為1,取值范圍:1 ~ 65535
auto-increment-increment=2
# 自增長字段遞增量,取值范圍:1 ~ 65535
auto-increment-offset=1

(2)Mater2

[mysqld]
basedir=/usr/local/mysql-8.0.20
datadir=/usr/local/mysql-8.0.20/data
character-set-server=utf8
lower-case-table-names=1
default_authentication_plugin=mysql_native_password

# 主從復制-主機2配置
# 主服務器唯一ID
server-id=3
# 啟用二進制日志
log-bin=mysql-bin
# 設置不要復制的數(shù)據(jù)庫(可設置多個)
binlog-ignore-db=sys
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
# 設置需要復制的數(shù)據(jù)庫(可設置多個)
binlog-do-db=test
# 設置logbin格式
binlog_format=STATEMENT
# 寫入操作更新二進制日志文件
log-slave-updates
# 自增長字段起始值,默認值為1,取值范圍:1 ~ 65535
auto-increment-increment=2
# 自增長字段遞增量,取值范圍:1 ~ 65535
auto-increment-offset=2

(3)Slave1

[mysqld]
basedir=/usr/local/mysql-8.0.20
datadir=/usr/local/mysql-8.0.20/data
character-set-server=utf8
lower-case-table-names=1
default_authentication_plugin=mysql_native_password

# 主從復制-從機1配置
# 從服務器唯一ID
server-id=2
# 啟用中繼日志
relay-log=mysql-relay

(4)Slave2

[mysqld]
basedir=/usr/local/mysql-8.0.20
datadir=/usr/local/mysql-8.0.20/data
character-set-server=utf8
lower-case-table-names=1
default_authentication_plugin=mysql_native_password

# 主從復制-從機2配置
# 從服務器唯一ID
server-id=4
# 啟用中繼日志
relay-log=mysql-relay

雙主雙從數(shù)據(jù)庫均重啟

service restart mysql

四臺服務器均關閉防火墻

systemctl stop firewalld

兩臺主數(shù)據(jù)庫分別創(chuàng)建用戶slave并授權

# 登錄
mysql -uroot -p

# 創(chuàng)建用戶
create user 'slave'@'%' identified with mysql_native_password by 'password';

# 授權
grant replication slave on *.* to 'slave'@'%';

# 刷新權限
flush privileges;

主從數(shù)據(jù)庫驗證slave用戶是否可用

# 主數(shù)據(jù)庫1服務器測試
mysql -uslave -p -h192.168.133.130 -P3306
mysql -uslave -p -h192.168.133.131 -P3306

# 從數(shù)據(jù)庫1服務器測試主數(shù)據(jù)庫1
mysql -uroot -p -h192.168.133.129 -P3306

# 主數(shù)據(jù)庫2服務器測試
mysql -uslave -p -h192.168.133.129 -P3306
mysql -uslave -p -h192.168.133.132 -P3306

# 從數(shù)據(jù)庫1服務器測試主數(shù)據(jù)庫1
mysql -uroot -p -h192.168.133.131 -P3306

兩臺主數(shù)據(jù)庫查詢服務ID及Master狀態(tài)

# 登錄
mysql -uroot -p

# 查詢server_id是否可配置文件中一致
show variables like 'server_id';

# 若不一致,可設置臨時ID(重啟失效)
# 主數(shù)據(jù)庫1
set global server_id = 1;
# 主數(shù)據(jù)庫2
set global server_id = 3;

# 查詢Master狀態(tài),并記錄 File 和 Position 的值
show master status;

# 注意:執(zhí)行完此步驟后退出主數(shù)據(jù)庫,防止再次操作導致 File 和 Position 的值發(fā)生變化

從數(shù)據(jù)庫1中設置主數(shù)據(jù)庫1

# 登錄
mysql -uroot -p

# 查詢server_id是否可配置文件中一致
show variables like 'server_id';

# 若不一致,可設置臨時ID(重啟失效)
set global server_id = 2;

# 設置主數(shù)據(jù)庫參數(shù)
change master to master_host='192.168.133.129',master_port=3306,master_user='slave',master_password='password',master_log_file='mysql-bin.000003',master_log_pos=156;

# 開始同步
start slave;

# 若出現(xiàn)錯誤,則停止同步,重置后再次啟動
stop slave;
reset slave;
start slave;

# 查詢Slave狀態(tài)
show slave status\G

# 查看是否配置成功
# 查看參數(shù) Slave_IO_Running 和 Slave_SQL_Running 是否都為yes,則證明配置成功。若為no,則需要查看對應的 Last_IO_Error 或 Last_SQL_Error 的異常值。

從數(shù)據(jù)庫2中設置主數(shù)據(jù)庫2

# 登錄
mysql -uroot -p

# 查詢server_id是否可配置文件中一致
show variables like 'server_id';

# 若不一致,可設置臨時ID(重啟失效)
set global server_id = 4;

# 設置主數(shù)據(jù)參數(shù)
change master to master_host='192.168.133.131',master_port=3306,master_user='slave',master_password='password',master_log_file='mysql-bin.000001',master_log_pos=156;

# 開始同步
start slave;

# 若出現(xiàn)錯誤,則停止同步,重置后再次啟動
stop slave;
reset slave;
start slave;

# 查詢Slave狀態(tài)
show slave status\G

# 查看是否配置成功
# 查看參數(shù) Slave_IO_Running 和 Slave_SQL_Running 是否都為yes,則證明配置成功。若為no,則需要查看對應的 Last_IO_Error 或 Last_SQL_Error 的異常值。

主數(shù)據(jù)庫1中設置主數(shù)據(jù)庫2

# 登錄
mysql -uroot -p

# 設置主數(shù)據(jù)庫參數(shù)
change master to master_host='192.168.133.131',master_port=3306,master_user='slave',master_password='password',master_log_file='mysql-bin.000001',master_log_pos=156;

# 開始同步
start slave;

# 若出現(xiàn)錯誤,則停止同步,重置后再次啟動
stop slave;
reset slave;
start slave;

# 查詢Slave狀態(tài)
show slave status\G

# 查看是否配置成功
# 查看參數(shù) Slave_IO_Running 和 Slave_SQL_Running 是否都為yes,則證明配置成功。若為no,則需要查看對應的 Last_IO_Error 或 Last_SQL_Error 的異常值。

主數(shù)據(jù)庫2中設置主數(shù)據(jù)庫1

# 登錄
mysql -uroot -p

# 設置主數(shù)據(jù)庫參數(shù)
change master to master_host='192.168.133.129',master_port=3306,master_user='slave',master_password='password',master_log_file='mysql-bin.000003',master_log_pos=156;

# 開始同步
start slave;

# 若出現(xiàn)錯誤,則停止同步,重置后再次啟動
stop slave;
reset slave;
start slave;

# 查詢Slave狀態(tài)
show slave status\G

# 查看是否配置成功
# 查看參數(shù) Slave_IO_Running 和 Slave_SQL_Running 是否都為yes,則證明配置成功。若為no,則需要查看對應的 Last_IO_Error 或 Last_SQL_Error 的異常值。

測試

通過工具連接雙主雙從數(shù)據(jù)庫或者在服務器連接。

注意:主數(shù)據(jù)庫的配置文件中配置了需要同步的數(shù)據(jù)庫,因此只會同步配置的數(shù)據(jù)庫,不配置則同步全部。

# 在主數(shù)據(jù)庫1創(chuàng)建數(shù)據(jù)庫test
create database test;

# 其他三個數(shù)據(jù)庫查看
show databases;

# 在主數(shù)據(jù)庫1創(chuàng)建表
use test;
create table t_user(id int, name varchar(20));

# 插入數(shù)據(jù)
insert into t_user values(1, 'C3Stones');

# 其他三個數(shù)據(jù)庫查看
use test;
select * from t_user;

# 其他刪改查操作請自行測試

到此這篇關于Linux安裝Mysql8.0.20并配置主從復制(一主一從,雙主雙從) 的文章就介紹到這了,更多相關Mysql8.0.20安裝并配置主從復制內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 如何利用MySQL查詢varbinary中存儲的數(shù)據(jù)

    如何利用MySQL查詢varbinary中存儲的數(shù)據(jù)

    varbinary 類型和char與varchar類型是相似的,他們是包含字節(jié)流而不是字符流,他們有二進制字符的集合和順序,他們的對比,排序是基于字節(jié)的數(shù)值進行的,本文給大家介紹如何利用MySQL查詢varbinary中存儲的數(shù)據(jù),感興趣的朋友一起看看吧
    2023-07-07
  • MySQL深入淺出精講觸發(fā)器用法

    MySQL深入淺出精講觸發(fā)器用法

    觸發(fā)器是SQLserver提供給程序員和數(shù)據(jù)分析員來保證數(shù)據(jù)完整性的一種方法,它是與表事件相關的特殊的存儲過程,事件是在 MySQL 5.1后引入的,有點類似操作系統(tǒng)的計劃任務,但是周期性任務是內置在MySQL服務端執(zhí)行的
    2022-08-08
  • mysql 8.0.13 安裝配置方法圖文教程

    mysql 8.0.13 安裝配置方法圖文教程

    這篇文章主要為大家詳細介紹了mysql 8.0.13 安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • MySQL更新,刪除操作分享

    MySQL更新,刪除操作分享

    這篇文章主要介紹了MySQL更新,刪除操作分享,文章根據(jù)MySQL的更新刪除命令的相關資料展開詳細的介紹,需要的小伙伴可以參考一下,希望對你有所幫助
    2022-03-03
  • MySQL5.6下windows msi安裝詳細介紹

    MySQL5.6下windows msi安裝詳細介紹

    這篇文章主要介紹了MySQL5.6下windows msi安裝詳細介紹,介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下
    2016-08-08
  • MySQL數(shù)據(jù)庫主從復制延時超長的解決方法

    MySQL數(shù)據(jù)庫主從復制延時超長的解決方法

    這篇文章主要給大家介紹了關于MySQL數(shù)據(jù)庫主從復制延時超長的解決方法,文中通過示例代碼介紹的非常詳細,對大家學習或者使用MySQL具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-06-06
  • MySQL遞歸查找樹形結構(這個方法太實用了!)

    MySQL遞歸查找樹形結構(這個方法太實用了!)

    對于數(shù)據(jù)庫中的樹形結構數(shù)據(jù),如部門表,有時候,我們需要知道某部門的所有下屬部分或者某部分的所有上級部門,這時候就需要用到mysql的遞歸查詢,下面這篇文章主要給大家介紹了關于MySQL遞歸查找樹形結構的相關資料,需要的朋友可以參考下
    2022-11-11
  • mysql復制中臨時表的運用技巧

    mysql復制中臨時表的運用技巧

    數(shù)據(jù)庫損壞,也沒有備份。剛好二進制日志全部保存完好,幸福了。導入二進制日志到MYSQL
    2012-09-09
  • Mysql數(shù)據(jù)庫慢查詢常用優(yōu)化方式

    Mysql數(shù)據(jù)庫慢查詢常用優(yōu)化方式

    數(shù)據(jù)庫SQL優(yōu)化是老生常談的問題,下面這篇文章主要給大家介紹了關于Mysql數(shù)據(jù)庫慢查詢常用優(yōu)化方式,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • MySQL數(shù)據(jù)導入導出的三種辦法總結

    MySQL數(shù)據(jù)導入導出的三種辦法總結

    當我們需要切換數(shù)據(jù)庫或備份數(shù)據(jù)時,導入和導出數(shù)據(jù)庫是一個常見的操作,下面這篇文章主要給大家介紹了關于MySQL數(shù)據(jù)導入導出的三種辦法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-05-05

最新評論