MySQL技術綜合

記得:用快樂去奔跑,用心去傾聽,用思維去發展,用努力去奮鬥,用目標去衡量,用愛去生活。

部署數據庫

apt-get update

問題 可能報錯

rm /var/lib/apt/lists/lock 

dpkg --configure -a

apt-get install mysql-server

彈框----輸入密碼 確認密碼   /// 也可以mysql_secure_installation配置

mysql  -uroot -p'12345'

主從配置

<master>

1、修改主配置文件

vim /etc/mysql/mysql.cnf

[mysqld]
log-bin=master-bin  //啓動MySQL二進制日誌
server-id=100      
log_bin_index = master-bin.index    //指定記錄二進制日誌的數據庫
binlog_do_db = my_data    //指定記錄二進制日誌的數據庫
binlog_ignore_db = mysql   //指定不記錄二進制日誌的數據庫
...
#bind 127.0.0.1 註釋掉

2、登錄主服務器創建從服務器用到的賬戶和權限:

mysql>grant replication slave on *.* to [email protected] identified by '12345';
mysql> flush privileges;

問題 授權這塊[email protected]兩者 加單引號 會出錯  未證實

授權給想要登錄的主機

bind   0.0.0.0

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.8' IDENTIFIED BY 'www.linuxidc.com' WITH GRANT OPTION;

3、重啓mysql

service mysql restart

4、查看狀態

x5EGDjvzRa8woflv.png!thumbnail      


<slave>

1、編輯配置文件

[mysqld]
log_bin=slave-bin
server-id = 2
relay-log = slave-relay-bin
relay-log-index = slave-relay-bin.index
...
#bind 127.0.0.1 註釋掉

2、重啓服務

service mysql restart

3、登錄Slave從服務器,連接Master主服務器

mysql> change master to master_host='39.96.73.99',master_user='slave',master_password='12345',master_log_file='master-bin.000001',master_log_pos=154;

4、啓動Slave數據同步。

mysql>start slave;

5、查看Slave信息:

mysql>show slave status\G;

#同步成功

FDkujcL2hCcH1NfB.png!thumbnail      


問題 如果不成功 主從上均執行一下命令

tKd7GfUcb2Ek7kWE.png!thumbnail      

從庫中斷問題

報錯顯示:ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository

大多是權限  和 log pos不一致

slave:      stop slave 
            reset slave
做以下的前提要保證:此刻從庫和主庫數據相同 要不然成功之後還會因缺少某條數據報錯        
master:     flush logs;         
            show master status;       記下File, Position。
slave:      CHANGE MASTER TO             
                      MASTER_LOG_FILE='file',MASTER_LOG_POS=pos;
            slave start;
            show slave status\G;

報錯        sY2vE8Isck8CW29o.png!thumbnail      

解決:stop slave ;

     set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;  #跳過slave上的1個錯誤

    start slave ;

線上MYSQL同步報錯故障處理總結 http://blog.itpub.net/15498/viewspace-2134013/

針對第三種 我試了直接三步https://blog.csdn.net/heng_ji/article/details/51013710

 


卸載mysql

sudo apt-get remove mysql-* 
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P    //清理殘留的數據

跳出一個對話框,選擇yes 


數據庫備份

注意是否需要my.cnf 裏邊 解除註釋
備份:
    mysqldump -uroot -p12345 --all-databases --single-transaction  --
master-data=2  --flush-logs  >  /alidata/`date +%F-%H%M`-mysql-all.sql

數據恢復

    還原庫 mysql -uroot -p12345 < /alidata/backup/mysql-all.sql
    導表: mysql -uroot -p12345 進去數據庫
          use cw100;  
          source /root/crm.sql  在相應表裏將外表倒進去

一個完整的備份腳本例子

#!/bin/bash
# Program
# use mysqldump to Fully backup mysql data per week!
# 2017-8-28 huangwei
# History
# Path
BakDir=/var/lib/mysql/backup
LogFile=/var/lib/mysql/backup/fullBakLog.log
Date=`date +%Y%m%d`
Begin=`date +"%Y年%m月%d日 %H:%M:%S"`
cd $BakDir
DumpFile=$Date.sql
GZDumpFile=$Date.sql.tgz
mysqldump -uroot -pcw100SQ18 --all-databases > $DumpFile
/bin/tar -zvcf $GZDumpFile $DumpFile
/bin/rm $DumpFile


#只保留過去四周的數據庫內容
count=$(ls -l *.tgz |wc -l)
if [ $count -ge 5 ]
then
file=$(ls -l *.tgz |awk '{print $9}'|awk 'NR==1')
rm -f $file
fi


Last=`date +"%Y年%m月%d日 %H:%M:%S"`
echo 開始:$Begin 結束:$Last $GZDumpFile succ >> $LogFile
#cd $BakDir/daily
#/bin/rm -f



查看binlog日誌

eg:
/usr/bin/mysqlbinlog  --no-defaults  --base64-output=decode-rows   -v  --database=cw100   --start-datetime="2019-04-17 08:00:00"   --stop-datetime="2018-07-18 11:00:00"   /usr/lib/mysql/mysql-bin.000154 > /root/binlog.txt


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章