MariaDB其實和mysql同樣,非有啥不同那就是名字不同~.~!mysql
開始~上篇實驗是MariaDB的單機多實例安裝sql
複製一般用來建立主節點的副本,經過添加冗餘節點來保證高可用性,固然複製也能夠用於其餘用途,例如在從節點上進行數據讀、分析等等。在橫向擴展的業務中,複製很容易實施,主要表如今在利用主節點進行寫操做,多個從節點進行讀操做,mysql複製的異步性是指:事物首先在主節點上提交,而後複製給從節點並在從節點上應用,這樣意味着在同一個時間點主從上的數據可能不一致,異步複製的好處在於它比同步複製要快,若是對數據的一致性要求很高,仍是採用同步複製較好。shell
最簡單的複製模式就是一主一從的複製模式了,這樣一個簡單的架構只須要三個步驟便可完成:數據庫
1 創建一個主節點,開啓binlog,設置服務器id緩存
2 創建一個從節點,設置服務器id服務器
3 將從節點鏈接到主節點上架構
雙實例端口3307主庫,3308從庫異步
3307主實例的mysqld配置socket
[mysqld2] port=3307 socket=/tmp/mysql3307.sock #套接字文件 pid-file=/tmp/mysql3307.pid #PID文件目錄 max_allowed_packet=1M #容許插入的數據大小 net_buffer_length=2k #套接字通訊緩衝區大小 table_open_cache=4 #表告訴緩存的大小 sort_buffer_size=64k #排序buffer大小 thread_stack=128k #每個線程分配多大內存 basedir=/usr/local/mysql #多實例必須開啓的安裝數據庫目錄 datadir=/data/mydata2 #數據目錄 server-id=244 #主從複製ID必須不同 log-bin = master3307-bin #必須開啓 log-bin-index = master3307-bin.index #必須開啓 thread_concurrency=4 #4個線程 innodb_file_per_table = 1 #每表一空間 #mysql_pwd='teleframe'
3308從實例的mysqld配置ide
[mysqld3] port=3308 socket=/tmp/mysql3308.sock pid-file=/tmp/mysql3308.pid max_allowed_packet=1M net_buffer_length=2k table_open_cache=4 sort_buffer_size=64k thread_stack=128k basedir=/usr/local/mysql datadir=/data/mydata3 innodb_file_per_table = 1 server-id=245 log-bin=mysql3308-bin relay-log = relay-log relay-log-index = relay-log-index thread_concurrency=4 read-only = on
開始主從配置
步驟一、鏈接到主庫上受權一個REPLICATION SLAVE
賬號,而且刷新受權表
[root@e3 mysql]# mysql -uroot -h127.0.0.1 -P3307 -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 8 Server version: 10.0.15-MariaDB-log Source distribution Copyright (c) 2000, 2014, Oracle, SkySQL Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | | test1 | +--------------------+ 5 rows in set (0.00 sec) MariaDB [(none)]> grant replication slave on *.* to 'repl'@'192.168.0.%' identified by 'repl'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> show master status; +-----------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +-----------------------+----------+--------------+------------------+ | master3307-bin.000005 | 632 | | | +-----------------------+----------+--------------+------------------+ 1 row in set (0.00 sec) MariaDB [(none)]>
二、鏈接到從庫上指定主庫,啓動slave
[root@e3 ~]# mysql -uroot -p'teleframe' -h127.0.0.1 -P3308 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 3 Server version: 10.0.15-MariaDB-log Source distribution Copyright (c) 2000, 2014, Oracle, SkySQL Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> change master to master_host='192.168.0.244',master_user='repl',master_password='repl',master_port=3307,master_log_file='master3307-bin.000005',master_log_pos=632; ERROR 1201 (HY000): Could not initialize master info structure for ''; more error messages can be found in the MariaDB error log #我這報錯了,若是你跟我同樣報錯就執行下面的命令 MariaDB [(none)]> reset slave; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> change master to master_host='192.168.0.244',master_user='repl',master_password='repl',master_port=3307,; Query OK, 0 rows affected (0.22 sec) #好了如今鏈接上了 master_log_file='master3307-bin.000005',master_log_pos=632 表示從主服務器那個二進制日誌文件開始複製由於這是複製受權信息,因此不必複製,在主服務器上能夠查看show master status; 查看內容show binglog events in 'master-bin.000001'; MariaDB [(none)]> show slave status\G *************************** 1. row *************************** Slave_IO_State: Master_Host: 192.168.0.244 Master_User: repl Master_Port: 3307 Connect_Retry: 60 Master_Log_File: master3307-bin.000005 Read_Master_Log_Pos: 632 Relay_Log_File: relay-log.000002 Relay_Log_Pos: 4 Relay_Master_Log_File: master3307-bin.000005 Slave_IO_Running: No # 從服務器有沒有正常工做主要是看這個值是否YES Slave_SQL_Running: No # Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 632 Relay_Log_Space: 248 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: NULL Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 0 Master_SSL_Crl: Master_SSL_Crlpath: Using_Gtid: No Gtid_IO_Pos: 1 row in set (0.00 sec) MariaDB [(none)]> start slave; #好啓動slave Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.0.244 Master_User: repl Master_Port: 3307 Connect_Retry: 60 Master_Log_File: master3307-bin.000005 Read_Master_Log_Pos: 632 Relay_Log_File: relay-log.000003 Relay_Log_Pos: 540 Relay_Master_Log_File: master3307-bin.000005 Slave_IO_Running: Yes #表示從服務器正常工做了 Slave_SQL_Running: Yes # Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 632 Relay_Log_Space: 831 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0 Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 244 Master_SSL_Crl: Master_SSL_Crlpath: Using_Gtid: No Gtid_IO_Pos:
來測試!
在主的上面建立一個庫看從的是否能夠複製到
主上建立
MariaDB [(none)]> create database kcwtest; Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | kcwtest | | mysql | | performance_schema | | test | | test1 | +--------------------+ 6 rows in set (0.00 sec)
從上查看
MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | kcwtest | | mysql | | performance_schema | | test | +--------------------+ 5 rows in set (0.00 sec)
能夠複製!這樣就實現單機實例複製,我作的3個實例,3306端口給默認的用,3307,3308端口作主從複製。