啓動mysql,這裏使用的是yum下載,因此使用systemctl管理html
systemctl start mariadb
遠程鏈接mysql服務端mysql
mysql -uroot -p -h 192.168.11.11 參數解釋: -u 用戶 -p 密碼,可先不輸入,回車後輸入, -h 服務端地址
修改mysql密碼sql
set password = PASSWORD('新密碼');
建立mysql用戶數據庫
create user yuncong@'%' identified by 'yuncong123'; # 新建用戶 yuncong@任意地址可連,密碼yuncong123
查詢mysql庫中的用戶信息vim
# 進入mysql庫 use mysql; # 查詢語句 select host,user, password from user;
受權語句服務器
# 語法 grant 權限 on 數據庫.表名 to 帳戶@主機名 對特定數據庫中的特定表受權 grant 權限 on 數據庫.* to 帳戶@主機名 對特定數據庫中的全部表給與受權 grant 權限1,權限2,權限3 on *.* to 帳戶@主機名 對全部庫中的全部表給與多個受權 # 權限分類: 查詢,插入,更新,新增 select ,insert,update, create #yuncong用戶對全部數據庫中文件有任何操做 grant all privileges on *.* to "yuncong"@'%';
移除權限併發
revoke all privileges on *.* from yuncong@"%";
詳情請建立用戶和受權請看:https://www.cnblogs.com/yuncong/articles/10122719.html異步
使用mysqldump進行數據備份ide
mysqldump -u root -p --all-databases > /tmp/db.dump
使用scp將數據發送到須要用的設備中高併發
數據導入
# 登陸須要導入的數據庫以後 source /tmp/db.dump
或者
mysql -uroot - < /tmp/db.dump
基於mysqldump實現邏輯備份查看該博客https://www.cnblogs.com/yuncong/articles/10122695.html#autoid-1-0-0
前言
MySQL數據庫的主從複製方案,是其自帶的功能,而且主從複製並非複製磁盤上的數據,而是經過binlog日誌複製到須要同步的的從服務器上
mysql數據庫特色
MySQL數據庫支持單向,雙向,鏈式級聯,等不一樣業務場景的複製,在複製的過程當中,一臺服務器充當主服務器(master),接收來自用戶的內容跟新,而一個或者多個其餘的服務器充當從服務器(slave),接收來自master上binlog文件的日誌內容,解析出SQL,從新更新到salve,使得主從服務器數據達到一致.
主從複製的邏輯有如下幾種
mysql主從複製優勢:
在生產環境中,MySQL主從複製都是異步的複製方式,即不是嚴格的實時複製,可是給用戶的體驗都是實時的。 MySQL主從複製集羣功能使得MySQL數據庫支持大規模高併發讀寫成爲可能,且有效的保護了服務器宕機的數據備份
應用場景
利用複製功能當master服務器出現問題時,咱們能夠從人工的切換到從服務器繼續提供服務,此時服務器的數據和宕機時數據幾乎是徹底一致的.
複製功能也能夠用作數據本分,可是若是人爲IDE執行drop,delete等語句刪除,那麼從庫的備份功能也就失效了
主從機制實現原理
(1) master將改變記錄到二進制日誌(binary log)中(這些記錄叫作二進制日誌事件,binary log events); (2) slave將master的binary log events拷貝到它的中繼日誌(relay log); (3) slave重作中繼日誌中的事件,將改變反映它本身的數據。
在master主庫上操做,開啓主庫功能
# 先將mariadb服務端關閉 systemctl stop mariadb # 編輯/etc/my.cnf寫入如下信息 [mysqld] server-id=10 log-bin=qishi-logbin # 保存退出 啓動mariadb服務端 systemctl start mariadb
在主庫建立用戶,用戶同步數據
create user yuanqing@'%' identified by 'yq666';
授予普通用戶, slave的身份
grant replication slave on *.* to 'yuanqing'@'%';
登陸mysql,鎖定數據庫的庫表,禁止寫入
# 鎖定數據庫 flush table with read lock; 查看主庫的狀態,記錄下,日誌文件的名字和位置 show master status;
退出mysql,導出主庫的數據
mysqldump -u root -p --all-databases > /opt/db.dump # 這裏的路徑要本身知道在哪
遠程傳輸主庫的數據,給從庫,進行導入
scp /opt/db.dump root@192.168.11.167:/opt/
解鎖主庫的鎖,寫入數據,查看從庫是否同步
unlock tables;
關閉該從庫的數據庫
systemctl stop mariadb # 查看進程確認 ps -ef |grep mysql
在從庫的 /etc/my.cnf中添加參數,添加只讀參數
vim /etc/my.cnf # 添加文本 [mysqld] server-id=3 read-only=true
重啓數據庫
systemctl restart mariadb
導入主庫傳過來的數據
mysql -uroot -p < /opt/db.dump # 或者登陸mysql,使用source source /opt/db.dump
登陸mysql,,輸入命令開啓主從之間的複製關係
change master to master_host='192.168.11.96', master_user='yuanqing', master_password='yq666', master_log_file='qishi-logbin.000001', master_log_pos=871; # host 是主的地址, master是主的用戶, password爲密碼, log_file是主庫查詢的日誌,和pos
開啓slave同步功能
start slave;
檢查slave機器的主從是否正確
show slave status\G #查看主從同步是否正確
確認查詢結果中的下列參數是不是yes,即主從複製正確
Relay_Master_Log_File: qishi-logbin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes
注意:
此時mariadb數據庫,請退出root用戶,使用普通用戶配置,由於root身份權限太大,沒法達到read-only效果
此時mariadb數據庫,請退出root用戶,使用普通用戶配置,由於root身份權限太大,沒法達到read-only效果
登陸普通用戶
mysql -uyuanqing -p
此時在主庫寫入數據,查看從庫是否正確同步
從庫沒法寫入數據,即爲正常