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

歡迎訪問 生活随笔!

生活随笔

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

数据库

mysql经典主从复制

發布時間:2025/3/15 数据库 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql经典主从复制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Mysql主從復制

?

  • 1 mysql主從復制原理

mysql復制是mysql自身內建的功能。復制的過程中一臺服務器充當主服務器,而一個或多個其他服務器充當從服務器。主服務器將更新寫入二進制日志文件,并通過維護文件的一個索引來跟蹤日志循環。主服務器中mysql主要提供認證服務,同時會啟動一個sqldump線程,這個線程會接受從服務器用戶的請求,并確保這個用戶具有權限之后,會去讀取二進制日志中的事件,如從服務器是第一次來請求,那么這個進程就讀取日志中的第一個事件,讀一個就發送給從服務器一個,從服務器的進程在接收到主服務器發行過來的數據之后,會保存在本地的中繼日志,然后再啟動一個具有特殊功能的線程,去中繼日志中讀取事件,讀一行,在本地執行一下,以此類推,最終生成本地的數據庫。

注意:復制時,所有對復制中的表的更新必須在主服務器中進行。從服務器只能被動的接受數據,本身并不會接受客戶端鏈接進來做任何寫操作,從服務器中的數據都是來自主服務器。

?

  • 2 主從復制實現步驟

  • 2.1 實驗環境

[root@mysql ~]# cat /etc/redhat-release

CentOS release 6.6 (Final)

  • 2.2 必備軟件安裝

[root@mysql tools]# ls

cmake-2.8.7.tar.gz? mysql-5.5.32.tar.gz

在安裝cmake和mysql之前需要安裝一些其他必備的包

[root@mysql ~]# yum install make gcc vim ncurses-devel libaio-devel qt* –y

?????

  • 2.2.1 源碼安裝cmake

[root@mysqltools]# tar zxvf cmake-2.8.7.tar.gz

[root@mysqltools]# cd cmake-2.8.7

[root@mysqlcmake-2.8.7]# ./configure

[root@mysqlcmake-2.8.7]# gmake && gmake install

  • 2.2.2 源碼安裝mysql

解壓

[root@mysql tools]# tar zxvfmysql-5.5.32.tar.gz

創建mysql用戶和組

[root@mysql tools]# groupadd mysql

[root@mysql tools]# useradd –gmysql –s /sbin/nologin –M mysql

[root@mysql tools]# cd mysql-5.5.32

創建安裝目錄

[root@mysqlmysql-5.5.32]# mkdir /application –p

開始檢查編譯環境編譯

[root@mysqlmysql-5.5.32]# cmake-DCMAKE_INSTALL_PREFIX=/application/mysql-5.5.32 -DMYSQL_DATADIR=/application/mysql-5.5.32/data-DMYSQL_UNIX_ADDR=/application/mysql-5.5.32/tmp/mysql.sock?-DEXTRA_CHARSETS=gbk.gb2312.utf8.ascii?-DENABLED_LOCAL_INFILE=ON?-DWITH_INNOBASE_STORAGE_ENGINE=1?-DWITH_FEDERATED_STORAGE_ENGINE=1?-DWITH_BLACKHOLE_STORAGE_ENGINE=1?-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1?-DWITHOUT_PARTITION_STORAGE_ENGINE=1?-DWITH_FAST_MUTEXES=1?-DWITH_ZLIB=bundled?-DENABLED_LOCAL_INFILE=1?-DWITH_READLINE=1?-DWITH_EMBEDDED_SERVER=1?-DWITH_DEBUG=0

編譯安裝

????? [root@mysql mysql-5.5.32]# make&& make install

[root@mysqlmysql-5.5.32]# cp /server/tools/mysql-5.5.32/support-files/my-small.cnf/etc/my.cnf

[root@mysqlmysql-5.5.32]# ln -s /application/mysql-5.5.32/ /application/mysql

配置環境變量

[root@mysqlmysql-5.5.32]# echo 'PATH=/application/mysql/bin:$PATH' >>/etc/profile

[root@mysqlmysql-5.5.32]# source /etc/profile

授權data目錄

[root@mysqlmysql-5.5.32]# chown -R mysql.mysql /application/mysql/data/

創建多實例配置目錄

[root@mysqlmysql-5.5.32]# mkdir -p /data/{3306,3307}/data

[root@mysqlmysql-5.5.32]# cp /server/tools/mysql-5.5.32/support-files/my-small.cnf /data/3306/my.cnf

[root@mysql3306]# cp my.cnf /data/3307/

[root@mysql3307]# sed -i 's#3306#3307#g' my.cnf

[root@mysql3307]# vim my.cnf

????????將server-id改成3


[root@mysql3307]# chown -R mysql.mysql /data/

[root@mysql3306]# cd /application/mysql/scripts/

初始化數據庫

???? [root@mysql scripts]# ./mysql_install_db--basedir=/application/mysql --datadir=/data/3306/data --user=mysql

????[root@mysql scripts]#./mysql_install_db --basedir=/application/mysql --datadir=/data/3307/data--user=mysql

????

啟動mysql多實例

[root@mysqlscripts]# mysqld_safe --defaults-file=/data/3306/my.cnf 2>&1 >/dev/null &

?? [root@mysql scripts]# mysqld_safe--defaults-file=/data/3307/my.cnf 2>&1 > /dev/null &

? ?? 查看多實例是否生效

[root@mysqlscripts]# ss -ntulp|grep 330

多實例進入mysql

[root@mysql~]# mysqladmin password oldboy123 -S /data/3306/mysql.sock

?? [root@mysql ~]# mysqladmin passwordoldboy456 -S /data/3307/mysql.sock

?

[root@mysql~]# mysql -uroot -poldboy123 -S /data/3306/mysql.sock

  • 2.3 復制過程

  • 2.3.1 主服務器開啟bin log

[root@mysql mysql]# vim/data/3306/my.cnf

要有這一行:log-bin = /data/3306/mysql.bin

  • 2.3.2主服務器設置server-id

[root@mysql mysql]# vim/data/3306/my.cnf

server-id = 1

  • 2.3.3 從服務器設置server-id(與主服務器不一樣)

[root@mysql mysql]# vim/data/3307/my.cnf

server-id = 3

從庫不需要開啟bin log

  • 2.3.4 主服務器創建授權用戶

[root@mysql ~]# mysql -uroot-poldboy123 -S /data/3306/mysql.sock

mysql> grant replication slaveon *.* to mike@'192.168.200.140' identified by 'abc123abc';?

mysql> flush privileges;

???

  • 2.3.5 主服務器開始鎖表進行數據備份

mysql> flush table with readlock;

[root@mysql ~]# mysqldump -uroot-poldboy123 --events -S /data/3306/mysql.sock -A -B|gzip>/tmp/slave_backup.sql

[root@mysql ~]# ls -l /tmp/

mysql> show master status;

  • 2.3.6 從服務器將主服務器的數據庫導入本地

[root@mysql ~]# mysql -uroot-poldboy123 -S /data/3307/mysql.sock </tmp/slave_backup.sql

  • 2.3.7 主庫解除鎖表

mysql>unlock tables;


  • 2.3.8 從服務器配置change master連接主庫

mysql> change master to master_host='192.168.200.140',master_user='mike',master_password='abc123ABC',master_log_file='mysql.000002',master_log_pos=651;

  • 2.3.9 從服務器開始與主庫同步

mysql>start slave;

  • 3 實驗測試

主庫:

從庫:



同步測試:

主庫:

從庫:



轉載于:https://blog.51cto.com/wang3781/1847238

總結

以上是生活随笔為你收集整理的mysql经典主从复制的全部內容,希望文章能夠幫你解決所遇到的問題。

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