將mairadb 10.1.11替換爲mysql 5.7.18

1.下載MySQL
http://dev.mysql.com/
http://mirrors.sohu.com/mysql/MySQL-5.7/

2.解壓
cd /apps/svr
tar -zxvf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz

3.建立link
unlink mariadb10.1
ln -s mysql-5.7.18-linux-glibc2.5-x86_64  mariadb10.1

4.創建用戶和更改權限(若存在用戶,可跳過此步)
groupadd apps
useradd -g apps apps
chown -R apps:aps /apps/svr
chown -R apps:aps /apps/dbdata

5.修改原mariadb的配置文件
先copy備份一份配置文件。
需要移除原mariadb 參數文件的以下參數:
metadata_locks_hash_instances
optimize_join_buffer_size=on
join_cache_bka=on
join_cache_hashed=on
join_cache_incremental=on
mrr_sort_keys=on
innodb_force_primary_key=1
enforce_storage_engine=InnoDB
extra_port=13306 
extra_max_connections=10
mrr_buffer_size=4M
join_cache_level=2
userstat=1
log_slow_verbosity=Query_plan,Innodb
slave_parallel_threads=0
innodb_additional_mem_pool_size=32m
ledir = /apps/svr/mariadb10.1/bin

加入以下參數:
explicit_defaults_for_timestamp=true

6.備份原mariadb的軟件目錄
7.檢查或建立需要的目錄
ls -l /apps/dbdat/mariadb10.1_data3306
8.初始化
/apps/svr/mariadb10.1/bin/mysqld  --defaults-file=/apps/conf/mysql/mariadb10.1_3306.cnf --initialize
報錯:
[apps@db--1 mariadb10.1_data3306]$ /apps/svr/mariadb10.1/bin/mysqld  --defaults-file=/apps/conf/mysql/mariadb10.1_3306.cnf --initialize
2017-04-22T09:08:17.206062Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting.
2017-04-22T09:08:17.206112Z 0 [ERROR] Aborting

處理方法:
 將配置文件中binlog相關目錄/apps/dbdat/mariadb10.1_data3306/log改成/apps/dbdat/log,實際目錄位置也作相應修改。
再初始化成功完成。

9.正常啓動Mysql
 /apps/svr/mariadb10.1/bin/mysqld_safe --defaults-file=/apps/conf/mysql/mariadb10.1_3306.cnf --socket=/tmp/mysql3306.sock &

10.更改root密碼
/apps/svr/mariadb10.1/bin/mysqladmin -u root -p password ‘密碼'


11.原帳號和權限遷移
現在主庫已有替換爲mysql 5.7,從庫還是mariadb,先在從庫上執行:
select user,host from mysql.user查詢到所有用戶,並根據show grants for 'rep'@'%查得的結果,在新的mysql 5.7主庫上執行,如:

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'rep'@'%' IDENTIFIED BY PASSWORD '*0B54sssssDEE6F7E547FB02B9sssFBBFFE41F067CFF7Bsssss';

這樣新mysql 5.7上的主庫帳號和權限就找回來了。

12.從庫搭建
將主庫的mysql程序目錄、數據庫文件目錄、binlog目錄、配置文件目錄對應scp到從庫主機的對應位置

13.從庫配置更改
修改配置文件中的server_id爲46173306改成46163306;刪除/apps/dbdat/mariadb10.1_data3306下的auto.cnf文件,保證主從庫的server-uuid不同.

14.從庫啓動
 /apps/svr/mariadb10.1/bin/mysqld_safe --defaults-file=/apps/conf/mysql/mariadb10.1_3306.cnf --socket=/tmp/mysql3306.sock &
15.建立主從關係
  先在主庫上查看:
   show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |  9008445 |              |                  |
+------------------+----------+--------------+------------------+

  從庫上執行:
change master to
master_host='主庫IP',
master_port=3306,
master_user='rep',
master_password='rep的密碼',
master_log_file='mysql-bin.000001',
master_log_pos=9008445;

16.啓動從庫複製
start slave;

17.檢查複製是否正常
show slave status\G
若Slave_IO_Running和Slave_SQL_Running都爲yes,Seconds_Behind_Master=0,且 Master_Log_File= Relay_Master_Log_File,Read_Master_Log_Pos=Exec_Master_Log_Pos,表示主從複製正常。同時在從庫上執行show processlist;可看到Slave has read all relay log; waiting for the slave I/O thread to up字眼和在主庫上執行show processlist可看到Master has sent all binlog to slave; waiting for binlog to be updated字眼。

發佈了197 篇原創文章 · 獲贊 23 · 訪問量 48萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章