mariadb實戰(zhàn)

實驗前準備(xiaoguo已測)

① iptables -F && setenforce 清空防火墻策略,關閉selinux
② 拿兩臺服務器都使用yum 方式安裝Mysql 服務,要求版本一致
③ 分別啟動兩臺服務器mysql

實戰(zhàn)一:mariadb實現數據庫簡單一主多從復制實戰(zhàn)

TIM截圖20180718201301.png

1.環(huán)境準備

centos 系統(tǒng)服務器3 臺、一臺用戶做Mysql 主服務器,2臺用于做Mysql 從服務器,
配置好yum 源、 防火墻關閉、各節(jié)點時鐘服務同步、各節(jié)點之間可以通過主機名互相通信
機器名稱            IP配置          服務角色        備注
master      10.0.0.20          主數據庫       二進制日志
slave1      10.0.0.21          從數據庫       中繼日志
slave2      10.0.0.22          從數據庫       中繼制日志

cat >> /etc/hosts  <<eof
10.0.0.20  master         
10.0.0.21  slave1  
10.0.0.22  slave2
eof

2、在主master 主服務器上

sed -i '/^\[mysqld\]/a server-id=1' /etc/my.cnf
sed -i '/^\[mysqld\]/a log-bin=/var/lib/mysql/mysql-bin' /etc/my.cnf


mysql -uroot -proot
show master status;
grant replication slave,replication client on *.* to slave@'%' identified by 'root';
show master status;

3、在從slave1上

sed -i '/^\[mysqld\]/a server-id=2'                  /etc/my.cnf
sed -i '/^\[mysqld\]/a relay_log = /var/lib/mysql/mysql-relay-bin'  /etc/my.cnf
sed -i '/^\[mysqld\]/a read_only = 1'                /etc/my.cnf
sed -i '/^\[mysqld\]/a log_slave_updates = 1'              /etc/my.cnf
#sed -i '/^\[mysqld\]/a log_bin = /var/lib/mysql/mysql-bin' /etc/my.cnf
systemctl start mariadb
mysql -uroot
MariaDB [(none)]> change master to master_host='10.0.0.20', \
    master_user='slave',\
    master_password='root', \
    master_log_file='mysql-bin.000001', \
    master_log_pos=245;
MariaDB [(none)]>  start slave;
MariaDB [(none)]> show slave status \G;

4、在從slave2上

① 進行完全備份(master)
mkdir /backup
mysqldump -uroot --all-databases > /backup/mysql-all-backup-`date +%F-%T`.sql
把備份生成的文件發(fā)給salve-mysql2機器上
scp /backup/mysql-all-backup-2018-07-18-07\:43\:25.sql root@10.0.0.22:/
② 查看現在的二進制文件狀態(tài),記錄下mysql-bin0000?和pos 下面有用(master)
show master status ; 
sed -i '/^\[mysqld\]/a server-id=3'                  /etc/my.cnf
sed -i '/^\[mysqld\]/a relay_log = /var/lib/mysql/mysql-relay-bin'  /etc/my.cnf
sed -i '/^\[mysqld\]/a read_only = 1'                /etc/my.cnf
sed -i '/^\[mysqld\]/a log_slave_updates = 1'              /etc/my.cnf
#sed -i '/^\[mysqld\]/a log_bin = /var/lib/mysql/mysql-bin' /etc/my.cnf
chown mysql.mysql mysql-all-backup-2018-07-18-07\:43\:25.sql
MariaDB [(none)]> show master status;


進行master的完全備份恢復
mysql -uroot -p < mysql-all-backup-2018-07-18-07\:43\:25.sql
systemctl restart mariadb 開啟服務

啟動從服務器復制線程
MariaDB [(none)]> change master to master_host='10.0.0.20',\
     master_user='slave',\
     master_password='root', \
     master_log_file='mysql-bin.000001', \
     master_log_pos=998;
start slave;
show slave status \G

7、解除主從關系,恢復獨立的服務器

① MariaDB [(none)]> stop slave; 關閉兩個線程
② vim /etc/my.cnf 刪除3行
relay-log =mysql-relay-log
read-only = 1
log_slave_updates = 1
③ systemctl restart mariadb 重啟服務
重置slave
stop slave
reset slave

總結:用show master status 查看binlog和pos 從slave有用。

mariadb查看變量
SHOW VARIABLES LIKE '%size%';
SHOW GLOBAL VARIABLES LIKE '%size%';
SHOW {BINARY | MASTER} LOGS
SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容