天天看點

mysql主從同步配置(mysql5.7)mysql主從同步配置(mysql5.7):

mysql主從同步配置(mysql5.7):

1.将目前資料庫檔案存儲目錄備份

cd /app/
tar -czvf  /app/packages/binlog_tar.gz.20210303  /app/database/mysql/database/mysql/data/3306/binlog*
tar -czvf  /app/packages/database_bak_tar.gz.20210303  database
           

2.登陸資料庫初始化binlog日志

mysql> reset master;
mysql> show master status\g;
           

3.導出mysql全量的表資料:

導出資料并記錄master_pos節點
./mysqldump -uroot -p --all-databases --master-data > /home/all_bak  
回車後輸入密碼
将導出的全量表資料檔案傳送至從資料庫機器
   scp /home/all_bak  
           

-------若導出失敗則根據實際情況調整逾時時間-------

mysql> show global variables like '%timeout%';
mysql> set global net_read_timeout = 120; 
mysql> set global net_write_timeout = 900;
mysql> set global wait_timeout=2880000;
mysql> set global interactive_timeout=2880000;
mysql> max_allowed_packet = 500M
           

4.配置檔案添加

vi /etc/my.cnf
server-id=1
log-bin=/app/database/mysql/data/3306/binlog
           

5.建立主從同步使用者

建立同步使用者slave
	create user 'slave'@'IP' identified by 'PWD';
	GRANT REPLICATION SLAVE ON *.* TO 'slave'@'IP';
	flush privileges;
撤銷授權
	REVOKE all PRIVILEGES on *.* from 'root'@'%' ;
檢查配置
	select user,host from mysql.user where user='slave';
重新開機資料庫
	kill -9 資料庫程序PID
	/bin/sh /usr/local/mysql/bin/mysqld_safe &
           

6.從資料庫機器配置:

建立mysql使用者

useradd mysql
passwd mysql
           

解壓mysql5.7gz包

本次使用的是mysql5.7.26
	tar -xzvf mysql-5.7.26-el7-x86_64.tar.gz
	mv mysql-5.7.26-el7-x86_64.tar.gz /app/mysql
賦權目錄給mysql使用者
	chown -R mysql.mysql /app/mysql
	cp -rp /app/mysql /usr/local/mysql/
	ln -s /usr/local/mysql/bin/mysql /bin/mysql
           

配置檔案添加:

與主資料庫配置檔案一緻,隻修改server-id
server-id=11
           

初始化資料庫

cd /usr/local/mysql/bin/
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/app/database/mysql/data/3306/ -- user=mysql --initialize
記錄好mysql初始化後的root使用者密碼
           

啟動資料庫

cd /usr/local/mysql/bin/
./mysqld_safe --defaults-file=/etc/my.cnf &
           

登陸mysql重置root密碼

重置root使用者密碼
	mysql> alter user 'root'@'localhost' identified by '123456';
重新整理MySQL的系統權限相關表
	mysql> flush privileges;
           

導入主資料全量表資料檔案

mysql -uroot -p < /home/wangtc/all_bak;   回車後輸入密碼
找到主資料全量表資料檔案binlog節點資訊并記錄
	head -30 /home/wangtc/all_bak|grep mysql-bin
           

配置主從同步(從資料庫)

mysql> change master to 
	-> master_host='主資料庫IP',
    -> master_port=3306,
	-> master_user='slave',
	-> master_password='PWD',
	-> master_log_file='mysql-bin.000001',
	-> master_log_pos=294;

啟動slave
mysql> start slave;

檢視slave狀态
mysql> show slave status\G;
           

7. 常見報錯及解決方法

若Slave_IO_Running不顯示為yes則存在以下幾種情況:

本機或主資料庫機器防火牆及selinux未關閉
無法使用主從同步使用者連接配接主資料庫:檢查主資料庫授權資訊,檢查從庫主從配置是否有誤
           

若Slave_IO_Running不顯示為yes則:

如果資料庫沒有使用主從複制,那麼就可以将參數log_bin_trust_function_creators設定為1
	SET GLOBAL log_bin_trust_function_creators = 1;
跳過slave上的1個錯誤,------若報錯的條數很多,可調整參數
	set global sql_slave_skip_counter =1;
           

若報錯:Got fatal error 1236 from master when reading data from binary log: ‘Could not find first log file name in binary log index file’

停止slave 
	mysql> stop slave;
重置slave
	mysql> reset slave;
啟動slave
	mysql> start slave;
           
---------以上均屬個人經驗,有不對的地方還請提出,一起溝通交流,謝謝----------
           

繼續閱讀