首頁>Club>
8
回覆列表
  • 1 # 重慶小寶快巴

    可以考慮下資料庫中介軟體mycat,透過配置的方式實現mysql資料庫的主從配置和垂直水平分表。

    使用mycat熟悉了,對資料庫叢集架構會有更深刻的認識。

  • 2 # 小魚不吃魚L

    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語句落地

    這裡寫圖片描述

    主從配置 - 主上操作

    安裝mysql

    修改my.cnf,增加server-id=130和log_bin=aminglinux1

    [root@wwlinux701 logs]# vim /etc/my.cnf

    server-id=130

    log_bin=wwlinux701

    修改完配置檔案後,啟動或者重啟mysqld服務

    [root@wwlinux701 logs]# /etc/init.d/mysqld restart

    Shutting down MySQL.... SUCCESS!

    Starting MySQL.............. SUCCESS!

    [root@wwlinux701 logs]#

    1

    2

    3

    4

    把mysql庫備份並恢復成aming庫,作為測試資料

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

    mysql -uroot -p123456 -e “create database aming”

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

    [root@wwlinux701 logs]# mysqldump -uroot -p123456 mysql > /tmp/mysql.sql

    Warning: Using a password on the command line interface can be insecure.

    [root@wwlinux701 logs]# mysql -uroot -p123456 -e "create database aming"

    Warning: Using a password on the command line interface can be insecure.

    [root@wwlinux701 logs]# mysql -uroot -p123456 aming < /tmp/mysql.sql

    Warning: Using a password on the command line interface can be insecure.

    [root@wwlinux701 logs]#

    建立用作同步資料的使用者

    mysql -uroot -p123456 aming

    grant replication slave on . to ‘repl’@192.168.11.131 identified by ‘123456’;

    flush tables with read lock; #需要先鎖定表

    show master status;

    [root@wwlinux701 logs]# mysql -uroot -p123456 aming

    grant replication slave on *.* to "repl"@192.168.11.131 identified by "123456";

    mysql> grant replication slave on *.* to "repl"@192.168.11.131 identified by "123456";

    Query OK, 0 rows affected (1.00 sec)

    mysql>

    flush tables with read lock; #需要先鎖定表

    mysql> flush tables with read lock;

    Query OK, 0 rows affected (0.11 sec)

    mysql>

    wwlinux701.000001 | 660619 #需要記住這兩個引數

    這裡寫圖片描述

    主從配置 - 從上操作

    安裝mysql

    檢視my.cnf,配置server-id=131,從要求和主不一樣從上不需要log_bin,因為只有主才需要二進位制檔案

    修改完配置檔案後,啟動或者重啟mysqld服務

    scp 192.168.11.130:/tmp*.sql /tmp/

    把主上aming庫同步到從上mysql庫除外的其他庫都同步一下

    可以先建立aming庫,然後把主上的/tmp/mysql.sql複製到從上,然後匯入aming庫

    mysql -uroot -p123456

    stop slave;

    change master to master_host=’192.168.11.130’,master_user=’repl’,master_password=’123456’,master_log_file=’wwlinux701.000001’,master_log_pos=660619;

    start slave;

    show slave status\G #用這個命令監測如果是兩個yes就是沒問題的

    這裡寫圖片描述

    還要到主上執行 unlock tables;

    檢視主從同步是否正常

    從上執行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:

    幾個配置引數

    主伺服器上

    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 -p123456 aming

    select count(*) from db;

    這裡寫圖片描述

    truncate table db;

    到從上 mysql -uroot -p123456 aming

    select count(*) from db;

    這裡寫圖片描述

    主上繼續drop table db;

    從上檢視db表

    主上執行

    select * from user where Host =’localhost’;

    mysql> delete from user where Host =’localhost’;

    這裡寫圖片描述

    從上執行

    select * from user where Host =’localhost’;

    這裡寫圖片描述

  • 中秋節和大豐收的關聯?
  • 《水滸傳》中晁蓋為何註定命喪曾頭市?