想要嘗試mysql的讀寫分離,在雲上安裝完mysql之后突然想到一個問題:我本機是沒有公網IP的。
開始嘗試在唯一一台雲服務器上安裝多個mysql實例。
主要步驟:
1.新建MySQL目錄
(1):新建實例目錄: /data/mysql/mysql_3307
(2):賦權:chown -R mysql.mysql /data/mysql/mysql_3307
(3):在apparmor中配置對目錄文件的訪問權限
vim /etc/apparmor.d/usr.sbin.mysqld
/data/mysql/mysql_3307/ r,
/data/mysql/mysql_3307/** rwk,

刷新: service apparmor restart
2.復制多個MySQL配置文件
mysql啟動時會讀取配置文件my.cnf,要配置多個實例需要復制多個my.cnf配置文件。在mysql5.7版本中
/etc/mysql/目錄下的my.cnf文件是個軟鏈接,關聯的是/etc/mysql/mysql.conf.d目錄下的mysqld.cnf文件,配置信息全部在mysqld.cnf中,所以可以直接復制mysqld.cnf命名為mysqld_3307.cnf作為啟動配置文件。
修改mysqld_3307.cnf配置


端口port: port=3307
socket socket=/data/mysql/mysql_3307/mysqld.sock
pid-file pid-file=/data/mysql/mysql_3307/mysqld.pid
datadir datadir=/data/mysql/mysql_3307
log_error log_error=/data/mysql/mysql_3307/error.log
注釋掉nice =0 #nice = 0
注釋掉bind-address方便從本地訪問 #bind-address = 127.0.0.1
保存。
3.初始化MySQL文件
mysql_install_db --defaults-file=/etc/mysql/mysql.conf.d/mysqld_3307.cnf --basedir=/usr/ --datadir=/data/mysql/mysql_3307 --user=mysql
執行完成后mysql文件會被初始化到datadir目錄下

(
5.7版本初始化的時候相比5.6 會有一些不同,之前在初始化第三個實例的時候報錯:
2111:29:05[WARNING]mysql_install_db is deprecated. Please consider switching to mysqld --initialize
可以看到mysql_install_db is deprecated,mysql_install_db被棄用。推薦使用的方法:
mysqld --initialize
正確的初始方式如下:mysqld --initialize --user=mysql --basedir=/usr --datadir=/data/mysql/mysql_3307
)
啟動實例: mysqld_safe --defaults-file=/etc/mysql/mysql.conf.d/mysqld_3307.cnf --skip-grant-tables &
先通過安全模式啟動實例,跳過安全認證登錄后修改root密碼
無密碼登錄:mysql -S /data/mysql/mysql_3307/mysqld.sock -P 3307
修改密碼:
mysql> update user set authentication_string=password('******') where user='root'
mysql> flush privileges;
mysql> quit
重新啟動,然后通過root密碼登錄。
關閉實例:
mysqladmin -u root -p -S /data/mysql/mysql_3307/mysqld.sock shutdown
啟動實例:
mysqld_safe --defaults-file=/etc/mysql/mysql.conf.d/mysqld_3307.cnf &
登錄實例:
mysql -S /data/mysql/mysql_3307/mysqld.sock -P 3307 -u root -p
登錄后執行命令的時候提示錯誤:ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this start
解決辦法,設置密碼:set password="YOUR_PASSWORD"。
至此單個實例安裝完成,需要安裝不同實例只需要復制多個mysqld.cnf配置文件,建多個目錄按以上步驟操作。
4.設置MySQL實例可以從本地navicate訪問