Linux CentOS 安裝MySql以及搭建MySql主從複製

来源:https://www.cnblogs.com/xuwujing/archive/2018/03/05/8511693.html
-Advertisement-
Play Games

前言 在之前的博客中,有過幾篇都寫了關於mysql在linux下的搭建教程,可能以後還會再寫,但是又不想重覆在寫, 於是便想單獨將此抽出來,單獨寫成一篇博客,並詳細記錄一些安裝過程以及遇到的問題解決辦法。順便也將MySql的主從搭建教程也寫在一起,方便以後查閱。 一、MySql安裝 在安裝MySql ...


前言

在之前的博客中,有過幾篇都寫了關於mysql在linux下的搭建教程,可能以後還會再寫,但是又不想重覆在寫, 於是便想單獨將此抽出來,單獨寫成一篇博客,並詳細記錄一些安裝過程以及遇到的問題解決辦法。順便也將MySql的主從搭建教程也寫在一起,方便以後查閱。

一、MySql安裝

在安裝MySql之前,查看是否以及安裝過MySql,如果已經安裝,但是不符合要求的話就卸載。
1,查找以前是否裝有mysql
先輸入:

rpm -qa|grep -i mysql

查看是否安裝了mysql
這裡寫圖片描述

2,停止mysql服務、刪除之前安裝的mysql
輸入:

ps -ef|grep mysql

刪除命令
輸入:

rpm -e –nodeps 包名

這裡寫圖片描述
如果提示依賴包錯誤,則使用以下命令嘗試

rpm -ev 包名 --nodeps

如果提示錯誤:error: %preun(xxxxxx) scriptlet failed, exit status 1
則用以下命令嘗試:

rpm -e --noscripts 包名

3、查找並刪除mysql目錄
查找結果如下:

find / -name mysql

刪除對應的mysql目錄
具體的步驟如圖:查找目錄並刪除
這裡寫圖片描述
註意:卸載後/etc/my.cnf不會刪除,需要進行手工刪除

4、再次查找機器是否安裝mysql

rpm -qa|grep -i mysql

這裡寫圖片描述

Mysql有兩種安裝模式,可自行選擇。

1,yum安裝

首先查看mysql 是否已經安裝
輸入:

rpm -qa | grep mysql   

如果已經安裝,想刪除的話
輸入:
普通刪除命令:

rpm -e mysql

強力刪除命令:

rpm -e --nodeps mysql    

依賴文件也會刪除

安裝mysql
輸入:

yum list mysql-server  

如果沒有,則通過wget命令下載該包
輸入:

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm   

下載成功之後,再輸入命令安裝

yum install mysql-server

在安裝過程中遇到選擇輸入y就行了
這裡寫圖片描述
這裡寫圖片描述

安裝成功後,輸入 service mysqld start 啟動服務
輸入:
mysqladmin -u root -p password '123456'
來設置密碼
輸入之後直接回車(預設是沒有密碼的)
然後再輸入
mysql -u root -p
這裡寫圖片描述
通過授權法更改遠程連接許可權
輸入: grant all privileges on . to 'root'@'%' identified by '123456';
註:第一個’root’是用戶名,第二個’%’是所有的ip都可以遠程訪問,第三個’123456’表示 用戶密碼 如果不常用 就關閉掉
輸入:flush privileges; //刷新

在防火牆關閉之後,使用SQLYog之類的工具測試是否能正確連接

這裡寫圖片描述

2,編譯包安裝

Mysql文件準備

將下載好的mysql安裝包上傳到linux伺服器
解壓mysql解壓包,並移動到/usr/local目錄下,重命名為mysql。
命令:

tar -xvf mysql-5.6.21-linux-glibc2.5-x86_64.tar.gz
mv mysql-5.6.21-linux-glibc2.5-x86_64 /usr/local
cd /usr/local
mv mysql-5.6.21-linux-glibc2.5-x86_64 mysql

這裡寫圖片描述

註: mysql預設的路徑是就是/usr/local/mysql ,如果安裝的地方更改,需要更改相應的配置文件。

安裝mysql

切換到mysql的目錄 /usr/local/mysql
輸入:

 ./scripts/mysql_install_db --user=mysql

這裡寫圖片描述
成功安裝mysql之後,輸入
service mysql start 或 /etc/init.d/mysql start

這裡寫圖片描述
查看是否啟動成功
輸入:

 ps -ef|grep mysql

切換到 /usr/local/mysql/bin 目錄下
設置密碼
mysqladmin -u root password '123456'入mysql
輸入:

mysql -u root -p

設置遠程連接許可權
輸入:

grant all privileges on *.* to 'root'@'%' identified by '123456'; 

然後輸入:

flush privileges;

說明: 第一個’root’是用戶名,第二個’%’是所有的ip都可以遠程訪問,第三個’123456’表示用戶密碼 如果不常用就關閉掉。

使用本地連接工具連接測試

這裡寫圖片描述

二、MySql搭建遇到的錯誤解決辦法

1,mysql離線安裝出現:Can't change to run as user 'mysql' ; Please check that the user exists!

原因:沒有該用戶。
解決辦法:創建該用戶!
例如:
添加用戶:

groupadd -g 315 mysql

用戶加入mysql:

useradd -u 315 -g mysql -d /usr/local/mysql -M mysql

再次輸入

 ./scripts/mysql_install_db --user=mysql

成功!
這裡寫圖片描述

2,安裝完mysql之後,輸入service mysql start 提示 mysql: unrecognized service。

問題原因: 是因為/etc/init.d/ 不存在 mysql 這個命令,所以無法識別。
解決辦法:
1.首先查找mysql.server文件在哪
輸入:

find  /  -name mysql.server

2.將mysql.server 複製到/etc/init.d/目錄下,並重命名為mysql或mysqld

輸入:

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

3.測試是否可以使用該命令
輸入:

service mysql status

service mysqld status

這裡寫圖片描述

3,mysql數據導入報錯

錯誤:Got a packet bigger than‘max_allowed_packet’bytes的問題

2個解決方法:

1.臨時修改:mysql>set global max_allowed_packet=524288000;修改 #512M

2.永久修改: 編輯my.cnf, 在 [MySQLd] 部分添加一句(如果存在,調整其值就可以):
max_allowed_packet=10M

成功之後重啟mysql。

4,mysql資料庫關於max_allowed_packet的問題

主要是mysql的JDBC連接限制了最大包長度1024B,即1KB
查詢當前資料庫的包長度顯示: show VARIABLES like '%max_allowed_packet%';
修改此參數
解決方案一(臨時): 進入msyql
輸入:
set global max_allowed_packet = 2*1024*10
更改最大值

解決方案二(永久):修改mysql.cnf(windows下my.ini),在[mysqld]段或者mysql的server配置段 進行修改。

max_allowed_packet = 20K。

修改成功後,重啟mysql。

三、MySql 用到的一些命令

1.查看mysql連接數

  SHOW FULL PROCESSLIST;

2.查看mysql的配置

show variables like "%innodb%";

3.查看mysql事件是否開啟

show variables like 'event_scheduler';

4.查看mysql鎖的狀態

是否鎖表:

 SHOW OPEN TABLES WHERE In_use > 0;
SHOW INNODB STATUS/G;

5.查看mysql data的存放位置

SHOW VARIABLES LIKE '%datadir%'

6.查看mysql 的超時時間設置

show variables like '%timeout%';

四、MySql修改密碼

1,知道原來的myql資料庫的root密碼;

在終端命令行修改

輸入

 mysqladmin -u root -p password "新密碼"

回車

 Enter password: 【輸入原來的舊密碼】

登錄mysql系統修改

進入mysql
輸入:

 mysql -uroot -p 回車 Enter password: 【輸入原來的密碼】

進入之後
輸入:

use mysql;
update user set password=password("新密碼") where user='root';
flush privileges;

然後使用剛纔輸入的新密碼即可登錄。

2,不知道原來的myql的root的密碼;

首先,你必須要有操作系統的root許可權了。要是連繫統的root許可權都沒有的話,先考慮root系統再走下麵的步驟。 類似於安全模式登錄系統。
需要先停止mysql服務

service mysql stop

/etc/init.d/mysql stop

註:如果mysql不行,就用mysqld
當提示mysql已停止後進行下一步操作

在終端命令行輸入:

mysqld_safe --skip-grant-tables &  

輸入mysql登錄mysql系統

use mysql;
UPDATE user SET password=password("新密碼") WHERE user='root';      
flush privileges;
exit;

重新啟動mysql服務
這樣新的root密碼就設置成功了。

五、MySql主從搭建

主從搭建參考:http://www.cnblogs.com/phpstudy2015-6/p/6485819.html#_label2

說明:搭建MySql的主從時,如複製名稱出現了錯誤,那麼嘗試使用用手動輸入命令。

1,事前準備

信息
操作系統:CentOS6.8
Mysql:5.6
IP:192.169.2.156 (主),192.169.2.98(從)

確保MySql已經成功安裝 !

2,配置更改

更改mysql中的my.cnf文件
添加如下:
主(Master):

     
#任意自然數n,只要保證兩台MySQL主機不重覆就可以了。
server-id=1
#開啟二進位日誌
log-bin=mysql-bin  
#步進值auto_imcrement。一般有n台主MySQL就填n 
auto_increment_increment=2
#起始值。一般填第n台主MySQL。此時為第一臺主MySQL   
 auto_increment_offset=1 
#忽略指定的資料庫 
binlog-ignore=mysql   
binlog-ignore=information_schema  
#要同步的資料庫(多個可以使用逗號隔開),預設所有庫
replicate-do-db=DBTEST  

從(Slave):

server-id=2
log-bin=mysql-bin
auto_increment_increment=2
auto_increment_offset=2
replicate-do-db=DBTEST 

更改完配置之後重啟!

3,主從配置

主(Master)
master新建slave用戶
進入MySql之後輸入:

grant replication slave on *.* to 'slave_account'@'192.169.2.98' identified by '123456'; 

說明: 設置一個slave_account用戶擁有REPLICATION SLAVE許可權,可以訪問的ip為192.169.2.98,並設置密碼為123456。
如果想某個網段的伺服器都能登錄,可以使用192.168.2.% 。表示192.168.2.0-192.168.2.255的Server都可以用slave_account用戶登陸主伺服器。
如果想所有的伺服器都能登錄,那麼可以設置為 % 。

然後輸入:

flush privileges;

查看信息,並記錄下文件名稱和分區ID

SHOW MASTER STATUS;

這裡寫圖片描述

從(Slave):
獲取master的授權信息之後,輸入slave的授權命令:

change master to master_host='192.169.2.156',master_user='slave_account',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=427;

確保成功執行!

4,主從測試

從(Slave):
開始主從複製:
輸入:

START SLAVE;

查看主從複製是否配置成功:

SHOW SLAVE STATUS\G

這裡寫圖片描述

說明:當看到Slave_IO_Running: YES、Slave_SQL_Running: YES 說明成功,否則失敗。

主(Master)
首先創建一個DBTEST資料庫,然後創建test表,並插入兩條數據。
這裡為了看起來更加明朗,我是用的是SQLYog 工具進行操作的。
進入mysql執行如下腳本:

CREATE DATABASE`DBTEST`;
USE `DBTEST`;
CREATE TABLE `test` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(16) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

insert  into `test`(`id`,`name`) values (1,'張三'),(2,'李四');

查看
輸入:

select * from test;

這裡寫圖片描述

從(Slave):
查看
輸入:

select * from test;

這裡寫圖片描述

從資料庫並沒有執行腳本,但是信息一致,說明成功同步了。

繼續測試,在主(master)刪除一條數據,查看從的數據。
主(Master)
這裡寫圖片描述

從(Slave):
這裡寫圖片描述

可以看到已經完全同步了!

那麼本篇教程就到此結束了,謝謝閱讀!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm 安裝了epel源 但 yum -y install erlang 的時候報錯 錯誤信息如下: 這就表明你需要更新CA證書了,那麼只需要更新 ...
  • nginx的log日誌分為access log 和 error log 其中access log 記錄了哪些用戶,哪些頁面以及用戶瀏覽器、ip和其他的訪問信息 error log 則是記錄伺服器錯誤日誌 錯誤日誌的形式如下: 10.1.1.1 - - [22/Aug/2014:16:48:14 +0 ...
  • 目前互聯網上主要有Windows、Uniux、Linux、Mac等不同功能特性的系統... ...廢話不多說,教程馬上開始。 電腦雙系統,是指將兩個操作系統安裝在電腦的不同分區,兩個系統互不幹擾。能裝什麼系統需要看系統相容性及硬體架構是否支持,如果支持,你可以選擇雙Windows或Windows+L ...
  • nginx的worker_processes參數來源: http://bbs.linuxtone.org/thread-1062-1-1.html分享一:搜索到原作者的話:As a general rule you need the only worker with large number ofw ...
  • SQLServer 安裝 參考鏈接: "http://blog.csdn.net/sangjinchao/article/details/62044021?locationNum=6&fps=1" JDBC連接SQL Server 參考鏈接: "http://blog.csdn.net/stewen ...
  • order by子句對查詢結果集進行排序 多列和拼接 多列的方式就很簡單了 這句話表示根據 lastname 和 firstname 兩列進行排序,並且是先按照 lastname 進行排序如果有相同的值就按照 firstname 進行排序。 拼接很有意思,可以寫成這個樣子 這是把表達式放在了orde ...
  • 資料庫 mysql 安裝: linux centos7: 在CentOS中預設安裝有MariaDB,這個是MySQL的分支,但為了需要,還是要在系統中安裝MySQL,而且安裝完成之後可以直接覆蓋掉MariaDB。 安裝mysql 1.下載並安裝mysql官方的yum Repository 使用yum ...
  • ORA-28547:connection to server failed,probable Oracle Net admin error ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...