天天看點

安裝MySQL和配置MySQL主從遇到的坑合集

linux下安裝MySQL

https://www.cnblogs.com/bookwed/p/5896619.html

https://www.cnblogs.com/duanrantao/p/8988116.html

https://www.cnblogs.com/bookwed/p/5896619.html

網頁資料

安裝環境 

CentOS7     mysql-5.5.62-linux-glibc2.12-x86_64.tar

安裝前的準備

特别注意的是一個階段配置一個快照如果發現GG還可以回退

安裝MySQL和配置MySQL主從遇到的坑合集

安裝虛拟機成功配置一下 安裝mysql配置一下等等。。總之你越是上心到後面你越輕松。

主從複制原理:

主從複制就是通過主的二進制日志檔案  通過io傳輸到從  然後進行資料同步中間涉及到事務的復原

sync_binlog=1: Mysql開啟bin-log日志使用bin-log時,預設情況下,并不是每次執行寫入就與硬碟同步,這樣在伺服器崩潰時,就可能導緻bin-log最後的語句丢失。可以通過這個參數來調節,sync_binlog=N,使執行N次寫入後,與硬碟同步。1是最安全的,但是也是最慢的。

如果用到innode 存儲引擎:

innodb_flush_logs_at_trx_commit=ON(刷寫日志:在事務送出時,要将記憶體中跟事務相關的資料立即刷寫到事務日志中去。)

innodb_support_xa=ON (分布式事務:基于它來做兩段式送出功能)

sync_master_info=1:每次給從節點dump一些事件資訊之後,主節點的master info 資訊會立即同步到磁盤上。讓從伺服器中的 master_info 及時更新。

總之就是主從之間通過二進制日志檔案進行資料傳輸

開始MySQL安裝  兩台虛拟機安裝效果都要能夠啟動

Mysql的搭建(不建議網上線上下載下傳安裝包)

1.解壓mysql安裝包到 /usr/local/mysql

tar

-zxvf  mysql.................

複制到local底下的mysql目錄

cp

-r mysql-5.6.33-linux-glibc2.5-x86_64 

/usr/local/mysql

2.

#添加使用者組

groupadd mysql

#添加使用者mysql 到使用者組mysql

useradd

-g mysql mysql

3.進入到mysql的安裝目錄

cd /usr/local/mysql

建立一個data檔案夾 用來存儲資料

mkdir

.

/data/mysql

4.修改資料庫權限 chown -R mysql:mysql ./

5.初始化資料庫

./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data/mysql

6.添加啟動服務

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

7.修改啟動腳本

vi /etc/init.d/mysqld

8.修改一個啟動服務的位址 一個data的檔案路徑

 service mysql restart   啟動mysql

9.進入到mysql目錄,執行添加MySQL配置的操作

cp support-files/my-medium.cnf /etc/my.cnf

或:

cp support-files/my-default.cnf /etc/my.cnf

10.配置環境變量

11.啟動 完成!

安裝教程網上多的很。。。。。

chown -R mysql:mysql mysql

給整個mysql目錄權限

這就完了????

安裝MySQL和配置MySQL主從遇到的坑合集

肯定沒有

主要這裡說明一下安裝的坑  隻有走過千山綠水  才能萬古長存。。。。。。

下面是遇到的坑:

1.Can't connect to local MySQL server through socket '/tmp/mysql.sock'

不能連接配接mysql      這是遠端連接配接的坑  不是防火牆就是權限,密碼

2. ERROR! The server quit without updating PID file (/var/lib/mysql/master.pid).

常見的錯誤:https://www.cnblogs.com/wangshaojun/p/5065298.html

主要原因是配置檔案  。

3.error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.

這是mysql沒有日志檔案 需要建立一個日志檔案目錄和一個.log檔案

4.遠端連接配接報錯 錯誤碼1130       更改linux中mysql中的user表

加一個host為%    後面的 為root

https://blog.csdn.net/liubingger/article/details/80680266

原因:遠端連接配接需要你在user表中加一個誰都可以連接配接進來,誰都可以操作的權限。

  1. CentOS7的防火牆   他與其他版本的CentOS不一樣

CentOS7中需要使用firewalld來關閉防火牆

 參考下面連結https://www.cnblogs.com/moxiaoan/p/5683743.html

  1. 發現啟動mysql用service MySQL start 啟動不了可以嘗試

在mysql安裝目錄下   

./support-files/mysql.server start   啟動

後面加stop就是停止  

7.如果進入mysql找不到發現找不到指令的情況

ln -s  /usr/local/mysql/bin/mysql  /usr/local/bin

因為系統預設會查找/usr/bin下的指令,由于mysql沒有在這個目錄下,是以出現not found。是以需要做一個軟連接配接到/usr/bin目錄下。

  1. 各種配置都配好了 網絡狀态也可以連接配接 發現還是遠端連接配接不上的

網上的各種傻逼四連:

一、檢查資料庫是否打開

二、測試能否ping通資料庫主機(另檢查資料庫是否可以遠端連接配接)

三、檢查資料庫主機防火牆是否屏蔽了3306端口

四、檢視一下資料庫的mysql庫中user表是否給予了授權

  1. Ifconfig 檢視本機ip  如果發現檢視不了了

 ip addr  是CentOS7中新檢視ip的方法

  1. 啟動mysql的時候 提示你重定向的資訊

還是環境變量的問題    找不到指令的也是

  1. 如果安裝失敗 你想鏟掉重新再裝  ,你需要删除所有有關mysql的檔案

如果你隻删了mysql安裝目錄  抱歉 你再裝一次肯定GG!!!

原因:中間涉及到了有一些配置檔案   比如my.cnf的關聯檔案  影響的是你下次安裝失敗!

  1. 錯誤碼,錯誤提示會給你一個錯誤的碼 下面是我安裝遇到的  如果沒有你遇到的你也可以百度

1045 不是你使用者名錯就是密碼錯   嘗試用andmin

2003  mysql沒啟動!

10060  配置問題   user表 和mysql權限

42000  登陸的時候用了匿名使用者  

       在my.cnf 中配置 skip-grant-tables  可以跳過mysql的權限驗證

28000  就是密碼錯誤之類的 推薦跳過驗證

1201  錯誤 無法初始化主資訊結構

解決辦法:stop slave; 中間放更改語句  reset slave;

    2013  重新開機試一下

  1. my.cnf檔案設定以下屬性可以跳過mysql的程式驗證,但是你靠這個去更改mysql的配置或者表結構,或者配置主從。他會提示你跳過驗證的不讓更改。

如果你驗證登陸會等到一個“”的賬号  你會發現你use mysql的庫都進不去

skip-grant-tables 

解決方法:直接用用戶端連接配接,到mysql的user表中将其中一條user為root的記錄的host改成localhost,然後儲存就好了;

配置主從

配置主從的時候 網上資源一大把。主要分兩塊

Mysql5.5之前 和5.5之後  配置方法不一樣   一個是在配置檔案中更改 一個是進入mysql之後進行更改。具體的方法就多試幾次。看懂一些配置檔案搭建非常簡單。

個人建議參照多個搭建方法來對照起來

https://blog.51cto.com/13910274/2172910 一整套流程

https://blog.csdn.net/daicooper/article/details/79905660 最簡單的一個

https://www.jianshu.com/p/b0cf461451fb

主要介紹一下坑:

1.有時候發現你儲存檔案無法儲存的情況!

   一般儲存檔案wq就可以直接儲存    有時候會讓你加wq!  

這樣都儲存不了的用: w ! sudo tee %   強制儲存 不過多半不好使!

 第二種方法 需要更改使用者權限

Su root 切換到root的時候  發現權限認證錯誤

你需要重新定義密碼: sudo passwd root  

更改新的密碼之後就可以切換到root了

2.如果你的虛拟機關機或挂起狀态 網絡丢失!

設定裡面找不到網絡連接配接的方式  而且百度的時候需要你配置各種靜态ip

更改各種設定和配置!如果你之前沒有配置過這些東西!

個人建議:

  1. 你先把虛拟機關了!

如果重新開機之後還是這樣   回退快照吧。

如果你沒快照,恭喜GG! 鏟掉重裝!

2.回退到快照你會發現你的網絡狀态還是那樣!  你就進行下面操作

安裝MySQL和配置MySQL主從遇到的坑合集
安裝MySQL和配置MySQL主從遇到的坑合集

之後你會發現??

安裝MySQL和配置MySQL主從遇到的坑合集

好了!

然後會更改你的ip位址   需要重新設定

3.  Mysql安裝完成。全程連接配接可以連接配接上 但是mysql-uroot-p找不到指令

   根本原因:沒有配置mysql的環境變量

可以在bin目錄下./mysql -uroot -p  來登陸

4.錯誤Ignoring query to other database   

  最傻逼的錯誤 自己百度。

5.Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.

報這個錯,他的意思是你配置檔案瞎了眼睛亂**寫。報錯了

  1. 最大的一個坑

主裡面設定server_id = 1   從裡面設定server_id = 2

你就會發現怎麼配置好了還是啟動不了

檢視 報錯資訊   在data檔案夾下   找一個.err結尾的 日志檔案

檢視檔案得知 報錯資訊是server-id 從不能和主一樣。。。。。

你就會發現在my.cnf檔案中最角落一塊

安裝MySQL和配置MySQL主從遇到的坑合集

檔案預設自帶了一個server-id的屬性  你要給删掉 不然一直

slave_IO_running : no

隻有兩個都是yes了才算配置成功了

最好的辦法就是:若失敗檢視mysql錯誤日志中具體報錯詳情來進行問題定位

安裝MySQL和配置MySQL主從遇到的坑合集

然後測試,網上測試方法一大把

最簡單的測試你就通過可視化工具在主裡面建立一張表,然後到從庫裡瘋狂重新整理。3秒鐘不出來 你就可以開始砸電腦

遇到坑了就百度,遇到錯誤看日志。

--如果有有我沒講解到了你還不知道怎麼解決 可以評論出來 。

繼續閱讀