日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

十四周三次课、MySQL主从配置

發布時間:2024/4/17 数据库 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 十四周三次课、MySQL主从配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>


說明:有不少同學不能一次性把實驗做成功,這是因為還不熟悉,建議至少做3遍

注意:做實驗先關閉防火墻

17.1 MySQL主從介紹

? MySQL主從又叫做Replication、AB復制。簡單講就是A和B兩臺機器做主從后,在A上寫數據,另外一臺B也會跟著寫數據,兩者數據實時同步的

? MySQL主從是基于binlog的,主上須開啟binlog才能進行主從。

? 主從過程大致有3個步驟

? 1)主將更改操作記錄到binlog里

? 2)從將主的binlog事件(sql語句)同步到從本機上并記錄在relaylog里

? 3)從根據relaylog里面的sql語句按順序執行

? 主上有一個log dump線程,用來和從的I/O線程傳遞binlog

? 從上有兩個線程,其中I/O線程用來同步主的binlog并生成relaylog,另外一個SQL線程用來把relaylog里面的sql語句落地

主從同步 :

? ? ? 主服務器 :授權允許同步:

? ? ? ? ? ? ? (1)NS記錄;

? ? ? ? ? ? ?(2)授權允許區域傳送

? ? 從服務器 :?

? ? ? ? ? ? (1)只需定義區域

MySQL主從原理圖

?

?


17.2 準備工作

準備兩臺機器,都安裝mysql服務,機器01: IP:192.168。133.130作為主庫,機器02:IP:132作為從庫。

1、先切換到cd /usr/local/src/,wget下載MySQL,在兩臺機器上面,然后解壓。

2、把解壓完的目錄放到/usr/localmysql, ? ? 命令:mv mysql-5.6.35-linux-glibc2.5-x86_64 ? ?/usr/local/mysql,,,,先檢查有沒有這個/usr/local/mysql目錄。如果有,就改名字。。。移動完成后,

使用命令查看:ls /usr/local/mysql ?,發現目錄下面有:bin、data、include、man、lib。

?

3、先創建用戶,useradd=mysql, ??初始化:./scripts/mysql_install_db --user=mysql --datadir=/data/mysql ? ?,查看有沒有初始化完成,命令:echo $?

?

4、vi /etc/my.cnf, ?把datadir后面修改成datadir=/data/mysql

5、cp support-files/mysql.server /etc/init.d/mysqld? ? ? ? ?#把啟動腳本復制到/etc/init.d/mysqld

?

6、vim ? /etc/init.d/mysqld ? ?中定義basedir和datadir, ? ?, , ? ,命令:basedir=/usr/local/mysql和datadir=/data/mysql

7、啟動mysql服務,/etc/init.d/mysqld start

如果報錯,就cd /data/mysql 再使用命令ls,查看mysql目錄下的文件。查看錯誤日志,命令:tail +主機名.err, ? , ?

只有命令:less !$,翻頁查看

使用命令:ls -l /data/mysql,查看所屬組和所數者是不是root,沒有說明正常。如果是,說明有問題要修改過

修改方法:

在機器01上面操作

[root@ocalhost mysql]# chown -R mysql:mysql # 所屬組和所數者為mysql [root@localhost ] # /etc/init.d/mysqld start 啟動mysql服務 Staring MySQL.SUCCESS #啟動成功 [root@localhosts ~]# !ps #查看啟動的mysql服務

在機器02查看啟動mysql

[root@ocalhost 02]# ls /usr/local/mysql # 所屬組和所數者為mysql bin data include man my-new.cnf README share support-files [root@localhosts 02~]# /etc/init.d/mysqld start #啟動mysql服務 [root@localhosts ~]# ps aux | grep mysql #有mysql字樣和端口信息,MySQL說明啟動了

?

?


17.3 配置主

? 安裝mysql

? 修改my.cnf,增加server-id=130和log_bin=aminglinux1 ? ? ?#01終端的名字

? 修改完配置文件后,啟動或者重啟mysqld服務

? 把mysql庫備份并恢復成aming庫,作為測試數據

? mysqldump -uroot mysql > /tmp/mysql.sql

? mysql -uroot -e “create database aming”

? mysql -uroot aming < /tmp/mysql.sql

? 創建用作同步數據的用戶

? grant replication slave on *.* to 'repl'@slave_ip identified by 'password';

? flush tables with read lock;

? show master status;

實例:

在機器01上面操作

第一步

修改配置文件

[root@ocalhost mysql]# vi /etc/my.cnf ? ? ?# aminglinux1 01終端的名字

[root@localhost mysql]# /etcinit.d/mysqld restart #重啟MySQL服務 [root@ocalhost mysql]# pwd #查看當前的目錄 /data/mysql [root@ocalhost mysql]# ls -lt #查看有沒有生成aminglinux文件 ...... 1 mysql mysql 238972323 .. ... ... .. aminglinux1.0001 ...... 1 mysql mysql 238972323 .. ... ... .. aming #數據庫的名字 ...... 1 mysql mysql 238972323 .. ... ... .. aminglinux.index #實現主從的文件 ...... 1 mysql mysql 238972323 .. ... ... .. blog #接下來需要的blog文件

第二步

[root@ocalhost mysql]# mysqldump -uroot -p aminglinux blog > /tmp/blog.sql #備份blog文件 [root@localhost mysql]# du sh /tmp/blog.sql # 查看備份文件的大小 [root@ocalhost mysql]# mysql -uroot -p aminglinux -e "create database aming" #-e 創建一個新的庫 [root@localhost mysql]# mysql -uroot -p aminglinux aming < /tmp/blog.sql #恢復blog文件到原來的地方

創建用作同步數據的用戶

[root@ocalhost mysql]# mysql -uroot -p aminglinux #進入aming數據庫里面 mysql> grant replication slave on *.* to 'repl'@192.168.133.132 identified by '123456'; #指定權限 replication slave 所有的庫、所有的表,用戶repl,針對來源的IP,也就是02機器上的IP

鎖定表

mysql > flush tables with read lock; mysql > show master status;

mysql > quit #退出來 [root@localhost mysql]# ls #查看所有的數據庫 mysql mysql2 zrlog [root@ocalhost mysql]# mysql -uroot -p aminglinux mysql2 < /tmp/my2.sql #把mysql2 移到my2.sql [root@localhost mysql]# mysql -uroot -p aminglinux zrlog < /tmp/zrlog.sql #把zrlog移到/tmp/zrlog.sql [root@localhost mysql]# ls /tmp/*sql #查看拷貝的文件 /tmp/zrlog.sql /tmp/my2.sql /tmp/blog.sql

?


17.4 配置從

? 安裝mysql

? 查看my.cnf,配置server-id=132,要求和主不一樣

? 修改完配置文件后,啟動或者重啟mysqld服務

? 把主上aming庫同步到從上

? 可以先創建aming庫,然后把主上的/tmp/mysql.sql拷貝到從上,然后導入aming庫

? mysql -uroot

? stop slave;

? change master to master_host='', master_user='repl', master_password='', master_log_file='', master_log_pos=xx,

? start slave;

? 還要到主上執行 unlock tables

實例:

在02機器上面操作

[root@localhost ~]# ps aux | grep mysql #查看mysql服務有沒有啟動 [root@ocalhost ~]# vi /etc/my.cnf

[root@localhost ~]# /etcinit.d/mysqld restart #重啟MySQL服務 [root@localhost ~]# ls /data/mysql #查看/data/mysql下的文件 [root@localhost ~]# scp 192.168.133.130:/tmp/*.sql /tmp/ #從01機器拷貝一些數據庫 [root@ocalhost mysql]# mysql -uroot -bash:mysql:未找到命令 [root@localhost mysql]# alias 'mysql=/usr/local/mysql/bin/mysql' [root@ocalhost mysql]# alias 'mysqldump=/usr/local/mysql/bin/mysqldump' [root@localhost mysql]# mysql -u root mysql > create database aming; mysql > create database zrlog; #創建兩個庫 mysql > create database blog mysql > create database mysql2; mysql > quit #退出來 [root@localhost mysql]# mysql -uroot blog < /tmp/blog.sql # 恢復 [root@ocalhost mysql]# mysql -uroot zrlog < /tmp/zrlog.sql [root@localhost mysql]# mysql -uroot aming < /tmp/blog.sql [root@ocalhost mysql]# mysql -uroot aming < /tmp/blog.sql [root@localhost mysql]# mysql -uroot mysql2 < /tmp/my2.sql [root@ocalhost mysql]# ls /data/mysql

在機器01上面操作

[root@localhost mysql]# ls /data/mysql #查看01和02上面的文件是否一樣

實現主從

在02上面操作

[root@ocalhost mysql]# mysql -u root mysql > start slave; mysql > stop slave; mysql > change master to master_host='192.168.133.130', master_user='repl', master_password='123456', master_log_file='amingliunx1.000001', master_log_pos=474566;

mysql > start slave; #保存修改

查看主從同步是否正常

? 從上執行mysql -uroot

? show slave stauts\G

? 看是否有

? Slave_IO_Running: Yes

? Slave_SQL_Running: Yes

? 還需關注

? Seconds_Behind_Master: 0? //為主從延遲的時間

? Last_IO_Errno: 0

? Last_IO_Error:

? Last_SQL_Errno: 0

? Last_SQL_Error:

實例:

在02機器上面操作

mysql > show slave status\G #查看主從配置有沒有配置成功 如果有兩個yes,說明配置主從成功了;如果兩個有一個不YES,說明主從已經斷開了

在01機器上面操作

[root@localhost mysql]# mysql -uroot -p aminglinux mysql > unlock tables; #做完主從之后,恢復 mysql > exit

?

?


17.5 測試主從同步

幾個配置參數

? 主服務器上

? binlog-do-db=????? //僅同步指定的庫

? binlog-ignore-db= //忽略指定庫

? 從服務器上

? replicate_do_db=

? replicate_ignore_db=

? replicate_do_table= ? ? ? ? ? ? ? ? ? ? ? ? ? ?#

? replicate_ignore_table= ? ? ? ? ? ? ? ? ? ? ? ? ?#

? replicate_wild_do_table=?? //如aming.%, 支持通配符%

? replicate_wild_ignore_table=

?

? 主上 mysql -uroot aming?

? select count(*) from db;

? truncate table db;

? 到從上 mysql -uroot aming

? select count(*) from db;

? 主上繼續drop table db;

? 從上查看db表

實例:

主上 01上面

mysql > ?use aming;????? #登陸aming庫 mysql > show tables; #查看阿明數據庫

mysql > select count(*) wp_users; #查看行數

?

mysql > mysql >

在 02上面操作

mysql > use aming; mysql > select count(*) from wp_users;

主上 01上面

mysql > truncate table wp_users #清空 mysql > select count(*) from wp_users; #查看數據庫里面的東西有沒有被清空,

mysql > select * from wp_users; #如果上一步沒有清空,執行這一步

在 02上面操作,清空數據庫

mysql > select count(*) from wp_users; #查看數據庫里面的東西有沒有被清空,

mysql > select * from wp_users; #再檢測一次,是否被清空

?

測試再主上面刪除一個表,再從上面查看,是否查找到

mysql > drop table wp_users; #刪除wp_users表 mysql >

在02機器,從的上面查看

mysql > select * from wp_users; mysql > drop databas aming; #刪除aming庫 mysql > show slave status\G #測試主從配置有沒有出錯誤。

然后再01上面散出阿明表,在02上面測試

mysql > mysql > drop databas aming; #刪除aming庫

在02機器,從的上面查看

mysql > show slave status\G #測試主從配置有沒有出錯誤。

?

常見問題:

主從庫正常運行的時候,能否刪除多余的bin-log日志,刪除后會不會對主從庫有意響,如何正確的刪除bin-log

答:正確做法是在my.cnf配置日志過期時間。 自動刪除。?

當然也可以在mysql里面去刪除http://www.jb51.net/article/117819.htm?

2、把從庫的數據全部恢復了,再去解鎖主庫的表;

?

如果是生產環境,我主庫備份的數據庫有10G多,我從庫還原完,再去解鎖主庫的表;

答:首先,做主從這種操作基本上是在架構搭建初期就做好了的,

  • 擴展里面,咱們不是有提到過,不停庫做主從的文章。 還有就是,盡量選擇在凌晨,沒有啥用戶的時候做,金融類的,肯定要發通知的。

    ?

3、

我在配置好了之后出現了錯誤:

Slave_IO_Running:?connecting Slave_SQL_Running:?Yes

仔細檢查后發現主mysql配置授權的時候密碼有問題。

重新授權后再次查看狀態就ok了!切記一定要注意配置的各項參數!

答:后來檢查到是沒有關閉firewalld,selinux.

?

?

有的同學,遇到主從不能正常同步,提示uuid相同的錯誤。這是因為克隆機器導致。
https://www.2cto.com/database/201412/364479.html

轉載于:https://my.oschina.net/u/3803405/blog/1824172

總結

以上是生活随笔為你收集整理的十四周三次课、MySQL主从配置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。