虛擬機器CENTOS7下 安裝8.0版本MySQL MySQL主從配置詳細~
全部程式碼,寫在後面吧!
全部的程式碼在後面。
1、安裝mysql
先rz命令上傳一下!出現未響應是很正常的情況!等會就好啦。
ls檢視一下,已經出現啦~
xz -d mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz
這個解壓不顯示過程。
成功! 變成這個名字啦:mysql-8.0.13-linux-glibc2.12-x86_64.tar
tar -xvf mysql-8.0.13-linux-glibc2.12-x86_64.tar
將解壓後的資料夾拷貝到/usr/local/並重命名為mysql
mv -f mysql-5.7.10-linux-glibc2.5-x86_64 /usr/local/mysql
2、檢視系統是否有libaio包,如果沒有無法執行mysql資料庫
rpm -qa | grep libaio
libaio-0.3.107-10.el6.x86_64 //表示已經安裝
已經存在啦!
3、建立mysql使用者和使用者組
useradd -s /sbin/nologin -M mysql
4、修改mysql資料夾的屬主和屬組為mysql
進入有mysql的資料夾,修改.
chown -R mysql:mysql mysql
5、初始化資料庫,啟動mysql/bin目錄下的mysqld
8.0版本:
進入bin目錄,有啟動項的那個!
./mysqld --initialize --user=mysql
注意儲存初始化mysql資料庫密碼:
執行完成後注意最後一句,這是mysql資料庫自動生成的root密碼,一定要記錄下來
6、配置資料庫
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
或者直接進入/etc/my.cnf進行配置即可!
在實驗環境下,按下面的內容配置mysql即可:
vim /etc/my.cnf
要用英文輸入法來複制才可以!
# For advice on how to change settings please see # http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html # *** DO NOT EDIT THIS FILE. It's a template which will be copied to the # *** default location during install, and will be replaced if you # *** upgrade to a newer version of MySQL. [mysqld] # Remove leading # and set to the amount of RAM for the most important data # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. # innodb_buffer_pool_size = 128M # Remove leading # to turn on a very important data integrity option: logging # changes to the binary log between backups. # log_bin # These are commonly set, remove the # and set as required. basedir = /usr/local/mysql #mysql資料庫資料夾所在位置 datadir = /var/lib/mysql #mysql資料庫的資料檔案所在位置 # port = ..... # server_id = ..... socket = /var/lib/mysql/mysql.sock #mysql sock位置 # Remove leading # to set options mainly useful for reporting servers. # The server defaults are faster for transactions and fast SELECTs. # Adjust sizes as needed, experiment to find the optimal values. # join_buffer_size = 128M # sort_buffer_size = 2M # read_rnd_buffer_size = 2M character-set-server=utf8 #修改mysql伺服器預設的字符集 #此句不是必須 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES [client] socket = /var/lib/mysql/mysql.sock default-character-set=utf8 #符號開頭的沒必要複製上去!
7、啟動資料庫
所有版本通用:
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
service mysqld start
資料啟動完畢
8、連線測試資料庫
cd /usr/local/mysql/bin
./mysql -u root -p
現在忘記密碼豈不是尷尬啦~還好有備份!
輸入密碼,成功進入資料庫!
修改密碼:
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
分號不要忘記!
9、修改環境變數和ld.so.conf
將含有mysql命令的目錄新增到環境變數
# vim /etc/profile
PATH=/usr/local/mysql/bin:$PATH
另外一個:
#export PATH
在文字最後新增一下環境變數
將mysql目錄下的lib目錄新增到ld.so.conf檔案
#vim /etc/ld.so.conf
include /usr/local/mysql/lib/
新增,不是覆蓋刪除!
儲存退出後輸入
ldconfig
ldconfig 命令的用途,主要是在預設搜尋目錄(/lib和/usr/lib)以及動態庫配置檔案/etc/ld.so.conf內所列的目錄下,搜尋出可共享的動態 連結庫(格式如前介紹,lib.so),進而創建出動態裝入程式(ld.so)所需的連線和快取檔案.快取檔案預設為 /etc/ld.so.cache,此檔案儲存已排好序的動態連結庫名字列表**
從伺服器也要安裝MySQL,但是主從配置就有區別啦!
主從配置:
mysql主伺服器配置:
1、修改my.cnf,新增
[mysqld]
log-bin=mysql-bin
server-id=1
2、重啟mysql服務
service mysqld restart
systemctl restart mysqld.service
重啟的時候出問題啦,需要安裝一個東西!
我寫的:https://blog.csdn.net/weixin_42859280/article/details/84574205
3、在mysql資料庫中,建立使用者同步資料庫的賬號:
1、mysql主伺服器建立使用者並賦予許可權
要先登入MySQL才可以進行這個操作!
cd /usr/local/mysql/bin
./mysql -u root -p
create user 'repl' identified by '123456';
ALTER USER 'repl'@'%' IDENTIFIED BY '123456';
flush privileges;
GRANT replication slave ON *.* TO 'repl'@'%';
GRANT ALL privileges ON *.* TO 'repl'@'%';
示例:
檢視使用者和遠端主機連線設定
select host,user from user;
檢視mysql主伺服器日誌:
show master status
show master status\G
試試同步資料!
關掉防火牆!
mysql從伺服器配置:
所有版本通用
1、修改my.cnf,新增
[mysqld]
log-bin=mysql-bin
server-id=2
2、重啟mysql.server服務
service mysqld restart
systemctl restart mysqld.service
重啟的時候出問題啦,需要安裝一個東西!
我寫的:https://blog.csdn.net/weixin_42859280/article/details/84574205
3、在從伺服器設定主伺服器,實現主從配置
登入:
cd /usr/local/mysql/bin
./mysql -u root -p
檢視一下主MySQL的日誌:
CHANGE MASTER TO MASTER_HOST='192.168.159.136',MASTER_USER='repl',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=960;
4、開啟主從
start slave;
5、檢查從伺服器狀態,注意是否有報錯
show slave status\G;
已經是連線狀態;
試試同步資料!
關掉防火牆!
同步測試之前。
主資料庫:
從資料庫:
主:
建立資料庫:
從MySQL的同步:
全部程式碼:
xz -d mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz
tar -xvf mysql-8.0.13-linux-glibc2.12-x86_64.tar
mv -f mysql-8.0.13-linux-glibc2.12-x86_64 /usr/local/mysql
rpm -qa | grep libaio
useradd -s /sbin/nologin -M mysql
cd /usr/local
ls -al
chown -R mysql:mysql mysql
ls -al
cd mysql/bin/
./mysqld --initialize --user=mysql
(記得記下密碼!)
直接配置 /etc/my.cnf檔案。
vim /etc/my.cnf
複製以下內容:
[mysqld]
basedir = /usr/local/mysql
datadir = /var/lib/mysql
socket = /var/lib/mysql/mysql.sock
character-set-server=utf8
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[client]
socket = /var/lib/mysql/mysql.sock
default-character-set=utf8
啟動資料庫:
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
service mysqld start
登入資料庫:
cd /usr/local/mysql/bin
./mysql -u root -p
[email protected]: O=y#lQf1kAYJ 比如這個密碼,要緊貼著O的左邊進行復制。這樣才可以!
修改密碼:
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
#vim /etc/profile
PATH=/usr/local/mysql/bin:$PATH
#export PATH
#vim /etc/ld.so.conf
include /usr/local/mysql/lib/
#ldconfig
接下來就是主從配置啦!
主:
關掉防火牆!
修改my.cnf,新增
[mysqld]
log-bin=mysql-bin
server-id=1
service mysqld restart
systemctl restart mysqld.service
重啟的時候出問題啦,需要安裝一個東西!
我寫的:https://blog.csdn.net/weixin_42859280/article/details/84574205
登入:
cd /usr/local/mysql/bin
./mysql -u root -p
五條語句:
create user 'repl' identified by '123456';
ALTER USER 'repl'@'%' IDENTIFIED BY '123456';
flush privileges;
GRANT replication slave ON *.* TO 'repl'@'%';
GRANT ALL privileges ON *.* TO 'repl'@'%';
show databases;
use mysql;
show tables;
select host,user from user;
show master status\G;
從:
關掉防火牆!
修改my.cnf,新增
[mysqld]
log-bin=mysql-bin
server-id=2
service mysqld restart
systemctl restart mysqld.service
重啟的時候出問題啦,需要安裝一個東西!
我寫的:
https://blog.csdn.net/weixin_42859280/article/details/84574205
登入:
cd /usr/local/mysql/bin
./mysql -u root -p
CHANGE MASTER TO MASTER_HOST='192.168.159.136',MASTER_USER='repl',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=1373;
開啟主從
start slave;
show slave status\G;
測試同步:
主:
建立資料庫:
create database www;
use www;
create table info(num int);
show tables;
insert into info values(666);
select * from info;
從:
use www;
show tables;
select * from info;
另外,如果
不是兩個yes的話。
就檢查一下:
- 防火牆關閉了嗎?
- repl這個使用者可以登入主MySQL嗎?
- server-id=1 server-id=2 這個添加了嗎?
- 看看slave的status資訊是否跟主MySQL的master status一樣!
如果都不行的話,就重新做一遍吧!