時間:2022-10-02來源:www.ship-models.net作者:電腦系統城
環境:ubuntu20.04.1,mysql:8.0.22。
主:192.168.87.3
備:192.168.87.6
1 2 3 |
sudo apt-get install mysql-server sudo apt-get install mysql-client sudo apt-get install libmysqlclient-dev |
首次安裝后,使用sudo mysql -uroot -p
直接進入,更改root密碼操作如下:
1 2 3 |
use mysql; ALTER USER 'root' @ 'localhost' IDENTIFIED WITH mysql_native_password BY 'root' ; FLUSH PRIVILEGES ; |
配置/etc/mysql/mysql.conf.d/mysqld.cnf
如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
[mysqld] user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 datadir = /var/lib/mysql bind-address = 192.168.87.3 # 本機ip mysqlx-bind-address = 127.0.0.1 key_buffer_size = 16M myisam-recover-options = BACKUP max_connections = 1000 log_error = /var/log/mysql/error.log server-id = 1 log_bin = /var/log/mysql/mysql-bin.log max_binlog_size = 100M binlog_do_db = test binlog_ignore_db = mysql binlog_format = row sync_binlog = 1 innodb_flush_log_at_trx_commit = 1 |
更改完后重啟數據庫
1 | systemctl restart mysql.service |
創建同步賬號
1 2 |
CREATE USER 'sync' @ '192.168.87.6' IDENTIFIED WITH mysql_native_password BY 'sync' ; grant replication slave on *.* to 'sync' @ '192.168.87.6' ; |
192.168.87.6為從數據庫的IP。
查看配置是否生效
創建數據快照
1 | mysqldump --all-databases --master-data > dbdump.db |
–master-data
這個選項會自動加上CHANGE_MASTER_TO給從機來開始復制過程。在備份時使用–databases
(備份特定的數據庫)和–ignore-tables
(排除備份特定的表) 選項,各個數據庫和表名之間用空格隔開。
1 2 3 4 |
use mysql; update user set host='%' where user = 'root'; FLUSH PRIVILEGES; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; |
如果此時仍無法訪問,查看防火墻是否關閉。關閉命令:
1 | sudo ufw disable |
或者開放3306端口號。
配置/etc/mysql/mysql.conf.d/mysqld.cnf
如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
[mysqld] user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 datadir = /var/lib/mysql bind-address = 192.168.87.6 mysqlx-bind-address = 127.0.0.1 key_buffer_size = 16M myisam-recover-options = BACKUP log_error = /var/log/mysql/error.log server-id = 2 log_bin = /var/log/mysql/mysql-bin.log # binlog_expire_logs_seconds = 2592000 max_binlog_size = 100M binlog_do_db = test binlog_ignore_db = mysql |
同步數據
在主庫上dump的文件scp到從庫上,然后登錄mysql并執行如下命令:
1 2 |
set sql_log_bin=0; source /home/shitianming/Documents/dbdump.db |
配置slave
1 2 3 4 5 6 7 |
CHANGE MASTER TO MASTER_HOST='192.168.87.3', MASTER_USER='sync', MASTER_PASSWORD='sync', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=730; |
SHELL 復制 全屏
上述參數在主庫的mysql客戶端上運行
show master status
可看到。
進行測試
在主庫的test
數據庫里添加數據,在從庫上看到是否同步。
2022-10-02
一文搞懂MySQL運行機制原理2022-10-02
詳解MySQL客戶端/服務器運行架構2022-10-02
Mysql實現模糊查詢的兩種方式(like子句 、正則表達式)對于MySQL中的樂觀鎖和悲觀鎖,可能很多的開發者還不是很熟悉,并不知道其中具體是如何實現的。本文就針對這個問題做一個實際案例演示,讓你徹底明白這兩種鎖的區別。...
2022-09-11