mysql5.7.21安裝和主從同步

碎碎念
mysql

慣例碎碎念。linux

好久以前就作過mysql的部分應用架構,包括主從複製和集羣等,一直沒有造成博客記錄下來,雖然網上也有不少的相關資料,可是出於加深記憶,仍是把本身的操做步驟和截圖一步步記錄下來,回頭忘了也能夠回顧,固然,也但願有小夥伴能獲得幫助。sql

環境vim

一臺裝有vsphere6.5的宿主機,和宿主機上的centos虛擬機若干。windows

一、vsphere 6.5centos

二、centos 7服務器

三、mysql 5.7架構

四、navicat 8socket

五、windows 10tcp

安裝mysql

一、yum方式安裝

# 進入文件夾

cd /usr/local

# 建立你本身的文件夾

mkdir zoro zoro/setup

# 進入建立的文件夾

cd zoro/setup

# 下載官方yum源包

wget https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm

# 賦予執行權限

chmod +x mysql57-community-release-el7-11.noarch.rpm

# 本地安裝,一路Y就好了

yum localinstall mysql57-community-release-el7-11.noarch.rpm

# 啓動

systemctl start mysqld

# 獲取臨時密碼

grep 'temporary password' /var/log/mysqld.log

# 登陸mysql

mysql -uroot -pYourPwd

# 修改密碼 OR 配置等,你想幹嗎就幹嗎

二、二進制安裝

# 進入文件夾

cd /usr/local

# 建立你本身的文件夾

mkdir zoro zoro/setup

# 進入建立的文件夾

cd zoro/setup

# 下載二級制包,地址二選一

# 官網鏡像,跟烏龜似的

wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz

# 國內鏡像,速度槓槓的

wget http://mirrors.ustc.edu.cn/mysql-ftp/Downloads/MySQL-5.7/mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz

# 解壓縮

tar zxvf mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz

# 移動並重命名到指定地方,須要先建立目錄

mkdir /usr/local/server

mv mysql-5.7.21-linux-glibc2.12-x86_64 /usr/local/server/mysql

# 進入mysql 目錄

cd /usr/local/server/mysql

# 建立data目錄

mkdir /data /data/db /data/db/mysql

# 檢查和建立用戶

cat /etc/group | grep mysql

# 如過查無結果,則建立mysql用戶

groupadd mysql

useradd -r -g mysql mysql

#科普1:-g, --gid GROUP 新帳戶主組的名稱或 ID

#科普2:-r, --system 建立一個系統帳戶,不可用於登陸

# 賦權

chown -R mysql:mysql /data/db/mysql

chmod 750 /data/db/mysql

# 執行安裝

./bin/mysqld --initialize --user=mysql --basedir=/usr/local/server/mysql --datadir=/data/db/mysql

# 記錄屏幕中的臨時密碼

A temporary password is generated for root@localhost: wmujowe!68H

# 若是basedir和datadir修改過,須要先修改./support-files/mysql.server

vim ./support-files/mysql.server

#填入

basedir=/usr/local/server/mysql

datadir=/data/db/mysql

# 複製服務腳本

cp -a ./support-files/mysql.server /etc/init.d/mysqld

# 編輯配置文件,將data目錄等參數修正

# 一、若是如下兩個目錄不在上面賦權的範圍內,也要從新賦權,不然沒法啓動

log-error=/var/log/mysql/mariadb.log

pid-file=/var/run/mysql/mariadb.pid

chown -R mysql:mysql /var/log/mysql

# 二、配置文件加入[mysql]節點,用以客戶端鏈接

[mysql]

socket=/data/db/mysql/mysql.sock

# 加入環境變量

export PATH=$PATH:/usr/local/server/mysql/bin

# 啓動mysql

service mysqld start

# 接下來的步驟就和yum方式相似了,再也不贅述

mysql -uroot -pYouPwd

...

三、其餘說明

除了上述兩種方式外,還有源碼安裝等方式,若有興趣,請自行研究。

yum方式安裝相對來講比較省事,可是因爲下載鏡像在國外,通常速度較慢,若是不能接受的話建議採用其餘方式。

二進制安裝稍微繁瑣一點,建議有Linux經驗的小夥伴採用。

Tips

①修改密碼
提供關於修改密碼的命令

# 登陸

mysql -uroot -pYourPwd

# 第一種方式

set password=password(YourNewPwd);

# 第二種方式

use mysql;

update user set authentication_string=password(YourNewPwd) where User='root';

②移動data目錄
默認的mysqldata目錄在於/var/lib/mysql,若是須要移動目錄,能夠參考下列操做

# 關閉mysql

systemctl stop mysqld

# 建立你本身的目錄

mkdir /data/db

# 移動mysql文件夾

mv /var/lib/mysql /data/db

# 更改權限

chown -R mysql:mysql /data/db/mysql

# 啓動mysql

sysctemctl start mysqld

# 若是遇到啓動問題,通常先檢查配置文件是否有錯

# 若是確認配置文件沒錯,還啓動不了,能夠嘗試下面的設置

vim /etc/selinux/config

# 設置 SELINUX=disabled

# 保存重啓

reboot

# 再次嘗試啓動mysql

sysctemctl start mysqld

Tips:

關於selinux這裏不作贅述,有興趣的能夠去查閱資料瞭解

④建立用戶和賦權
提供關於建立用戶和賦權的基礎命令,如需瞭解詳細內容,請參考官網

Create user ‘user’@’host’ identified by ‘YourPwd’;

# 賦予權限(原則上是最小權限賦予,此處賦予db.tables的所有權限)

Grant all on db.tables to user;

flush privileges;

⑤防火牆開放端口
若是你開啓了防火牆,須要開放默認的3306端口,不然外網沒法訪問

# 查看防火牆狀態

systemctl status firewalld

# 若是防火牆開啓,須要開放3306端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent

# 重啓防火牆

systemctl restart firewalld

主從配置

前提條件,分別在兩臺服務器上安裝msyql服務

IP :192.168.1.246(centOS7 + mysql) master

IP : 192.168.1.249(centOS7 + mysql) slave

一、master配置

這裏不區分庫,針對全部的庫都作主從複製,若是須要特定庫作主從複製的,請翻閱四、其餘說明

vim /etc/my.cnf

log-bin=mysql-bin

server-id=246

log_bin_trust_function_creators=1

重啓mysql,並登錄mysql進行操做

systemctl restart mysqld

mysql -uroot -pYourPwd

#建立同步帳號,賦予權限,這裏進行演示,不作權限限制和ip限制,請知悉

mysqlGRANT FILE ON *.* TO 'slave'@'%' IDENTIFIED BY 'YourSlavePwd';

mysqlGRANT replication slave on *.* to ’slave’@’%’ identified by 'YourSlavePwd'

mysqlflush privileges;

#查看主服務器狀態,並記錄下狀態

mysql show master status;

二、slave配置

vim /etc/my.cnf

read_only=1

log-bin=mysql-bin

server-id=249

log_bin_trust_function_creators=1

重啓mysql,並登錄mysql進行操做

systemctl restart mysqld

mysql -uroot -pYourPwd

# 配置master,並開啓同步

mysql change master to master_host='192.168.1.246',master_user='slave',master_password='YourSlavePwd', master_log_file='mysql-bin.000033',master_log_pos=57883;

# 開啓同步

mysql start slave;

# 查看同步狀態

mysql show slave status\G;

# 若是出現如下兩個Yes,證實同步成功,若是出現問題,請翻閱`四、其餘說明`

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

三、驗證

一、用Navicat分別鏈接主庫和從庫

二、在主庫對某些記錄進行修改

三、查看從庫是否同步了主庫的修改

四、其餘說明

這裏分紅兩部分,一部分針對主從複製中,只要求同步部分庫的配置,另外一部分記錄主從不一樣步的解決方法。

①部分同步

須要修改my.cnf的配置文件,包括replicate-ignore-db和replicate-ignore-db以及binlog-do-db和binlog-ignore-db等參數配合。

具體配置說明請參考這裏

②主從不一樣步解決

1、忽略錯誤後,繼續同步。(該方法適用於主從庫數據相差不大,或者要求數據能夠不徹底統一的狀況,數據要求不嚴格的狀況。)

1)、中止同步

mysqlstop slave;

2)、設置參數

mysqlset global sql_slave_skip_counter =1;

3)、啓動同步並查看

start slave;

mysql show slave status\G;

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

2、從新作主從,徹底同步。(該方法適用於主從庫數據相差較大,或者要求數據徹底統一的狀況。)

1)、進入主庫,進行鎖表,防止數據寫入。注意:該處是鎖定爲只讀狀態,語句不區分大小寫

mysql flush tables with read lock;

2)、進行數據備份並解鎖

mysqldump -uroot -pYouPwd YourDB bak.sql;

mysql UNLOCK TABLES;

3)、查看master 狀態並記錄

mysql show master status;

4)、把mysql備份文件傳到從庫機器,進行數據恢復

5)、中止從庫的狀態

mysql stop slave;

6)、從庫執行mysql命令,導入數據備份

7)、設置從庫同步,具體參數請根據master status填寫

change master to master_host = '192.168.1.246', master_user = 'slave', master_port=3306, master_password='YourSalvePwd', master_log_file = 'mysqld-bin.000035', master_log_pos=120;

8)、從新開啓從同步

mysql start slave;

9)、查看同步狀態

mysql show slave status\G;

Slave_IO_Running: Yes

Slave_SQL_Running: Yes



相關文章
相關標籤/搜索