1.下載安裝:
wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
yum localinstall mysql57-community-release-el7-8.noarch.rpm
(提示進(jìn)程占用逮光,直接kill就行)
檢查mysql源是否安裝成功
yum repolist enabled | grep "mysql.*-community.*"
進(jìn)行安裝
yum install mysql-community-server
安裝完成后啟動(dòng)一下 看看有什么問題沒;
systemctl start mysqld
沒啥問題修改密碼:
sudo grep 'temporary password' /var/log/mysqld.log
通過上述命令找到你的密碼
mysql -uroot -p
輸入密碼進(jìn)入修改你的root賬號密碼
修改完密碼退出MySQL,出來修改目錄了稠诲。
2.修改目錄:
由于MySQL的數(shù)據(jù)存的比較大挑胸,需要換個(gè)路徑儲存數(shù)據(jù)俄占,你不可能把你的所有的數(shù)據(jù)都放在數(shù)據(jù)庫安裝的目錄下把,所以我們在data目錄下創(chuàng)建一個(gè)datamysql目錄來專門放MySQL的數(shù)據(jù)。
*以下操作需要root權(quán)限:
mkdir datamysql
mkdir datamysql/mysql
cp -R /var/lib/mysql/* /data/datamysql/mysql/
chown -R mysql:mysql /data/datamysql/mysql/
cp /etc/my.cnf /etc/my.cnf.bak
修改配置文件:
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
[client]
port=3306
socket=/data/datamysql/mysql/mysql.sock
default-character-set=utf8
[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
#
# 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
datadir=/data/datamysql/mysql
socket=/data/datamysql/mysql/mysql.sock
port=3306
explicit_defaults_for_timestamp
skip-host-cache
skip-name-resolve
user=mysql
max_connections=1000
tmp_table_size=512M
max_heap_table_size=512M
read_buffer_size=200M
read_rnd_buffer_size=200M
sort_buffer_size=200M
innodb_log_buffer_size=200M
innodb_buffer_pool_size=16G
character-set-server=utf8
wait_timeout=32000000
interactive_timeout=32000000
net_write_timeout=1800
innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:10G
innodb_file_per_table=1
innodb_print_all_deadlocks=1
# master-slave configuration
server-id=1234
log_bin=mysql-bin
relay_log=mysql-relay-bin
log-slave-updates=on
gtid-mode=on
enforce-gtid-consistency=on
slave-skip-errors=all
max_binlog_size=500M binlog最大文件 超過這個(gè) 系統(tǒng)就重生成一個(gè)
binlog-do-db=你需要同步的數(shù)據(jù)庫名稱
binlog-ignore-db=mysql
binlog-ignore-db=information_schema 忽略同步的數(shù)據(jù)庫挑社,這里面方的是權(quán)限庙洼,表信息等 這個(gè)不需要同步顿痪。
binlog-ignore-db=performance_schema
# MTS for master
binlog_group_commit_sync_delay=30
binlog_group_commit_sync_no_delay_count=20
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
修改完成后,使用mysql -uroot -p 登錄 在VM虛擬機(jī) 我遇到報(bào)錯(cuò)油够,找不到sock.需要進(jìn)入mysql 的log下查看:
cd /var/log
tail -n 300 mysqld.log
要是你是如下報(bào)錯(cuò):
MySQL [Warning] Can’t create test file xxx lower-test
假如有這個(gè)錯(cuò)誤蚁袭,直接執(zhí)行下面的命令:
- 首先關(guān)掉MySQL服務(wù):
service mysql stop
- 執(zhí)行如下命令
setenforce 0
- 重啟MySQL服務(wù)
systemctl start mysqld
[注意]:這個(gè)命令你下次開機(jī)的時(shí)候應(yīng)該還需要再次執(zhí)行一次,否則還是拋出上面的異常石咬,假如你不想這么麻煩揩悄,可以百度一下永久解決方案。
參考文章鏈接:
https://www.cnblogs.com/ajianbeyourself/p/4158874.html
這個(gè)時(shí)候我們關(guān)掉MySQL服務(wù)鬼悠,重新啟動(dòng)MySQL删性,并且查看現(xiàn)在的狀態(tài):
``
systemctl status mysqld
3.登錄遠(yuǎn)程訪問(VM虛擬機(jī) centos7):
mysql -uroot -p
輸入密碼為 進(jìn)入MySQL
接下來我們開始授權(quán):
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'MyNewPass4!' WITH GRANT OPTION; FLUSH PRIVILEGES;
這個(gè)命令的意思是myuser這個(gè)用戶用戶可以在任何IP(%代表任何IP),.代表任何表的權(quán)限亏娜,來訪問數(shù)據(jù)庫。
開完之后蹬挺,執(zhí)行命令维贺,開機(jī)自啟動(dòng)systemctl enable mysqld
systemctl daemon-reload
這個(gè)時(shí)候不出意外是肯定無法使用navicat進(jìn)程遠(yuǎn)程訪問的,需要進(jìn)行一下操作:
1.查看虛擬機(jī)IP
2.本地cmd ping一下
3.進(jìn)MySQL 查看你的端口多少
show variables like '%port%';
4.開放3306端口巴帮,你的可能不是3306 看配置文件也可以
安裝iptables服務(wù)
sudo yum install iptables-services
開啟服務(wù)
sudo systemctl enable iptables
sudo systemctl enable ip6tables
啟動(dòng)服務(wù)
sudo systemctl start iptables
sudo systemctl start ip6tables
修改配置文件
vi /etc/sysconfig/iptables
在-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT 后面加這個(gè)一行-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
wq保存推出
重啟網(wǎng)卡服務(wù)
service iptables restart
開始配置主從同步:
1.登陸主數(shù)據(jù)庫溯泣,修改密碼后,創(chuàng)建一個(gè)賬號來進(jìn)行主從同步
grant replication slave on *.* to 'slave'@'從庫的IP' identified by '密碼';
7.登陸從庫 按照上面的遷移目錄和修改配置文件都來一套榕茧,主要是配置文件里面的service_id不要和從庫的重復(fù)即可垃沦,其他一模一樣都可以。
然后開始在從庫進(jìn)行如下操作:
CHANGE MASTER TO MASTER_HOST='主庫IP', MASTER_PORT=主庫端口, MASTER_USER='slave', MASTER_PASSWORD='剛剛主庫的slave密碼', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=1615;
注意S醚骸V尽!蜻拨,上面的MASTER_LOG_FILE 和MASTER_LOG_POS 需要你在主庫查看再設(shè)置池充,SQL為 在主庫運(yùn)行:show master status\G;
8.以上配置完成后,再從庫進(jìn)行開啟主從同步 執(zhí)行如下SQL:
start slave;
9.然后在從庫:show slave status\G
,查看是否正常同步:
紅色框內(nèi)都是Yes就代表是已經(jīng)主從設(shè)置完成了官觅。
tips:
- 主從同步的表一定要在設(shè)置完主從后再創(chuàng)建纵菌,否則是不會同步到從庫的。
- 可以在主庫創(chuàng)建需要主從同步的表休涤,寫入測試數(shù)據(jù)咱圆,查看是否從庫有這些數(shù)據(jù)。
- 主從有時(shí)候會出現(xiàn)不同步的情況功氨,例如一個(gè)超級大的事務(wù)序苏,可能導(dǎo)致主從數(shù)據(jù)不一樣,這種情況情況下建議配置為:MTS(Multi-Threaded Slaves)捷凄,即多線程復(fù)制忱详,這樣并發(fā)量很大,或者有大事務(wù)的時(shí)候跺涤,避免一些延遲情況匈睁。
配置參考:
# MTS for salve
slave-parallel-type=LOGICAL_CLOCK
slave-parallel-workers=4
master_info_repository=TABLE
relay_log_info_repository=TABLE
relay_log_recovery=ON
參考鏈接:
https://www.cnblogs.com/MYSQLZOUQI/p/6894464.html
遇到的問題:
1.主庫創(chuàng)建的用戶在從庫服務(wù)器無法登陸:
這個(gè)應(yīng)該是你端口問題,直接按照我上面的進(jìn)行設(shè)置就行桶错。
參考資料:
1.https://www.osyunwei.com/archives/566.html
2.https://www.cnblogs.com/ivictor/p/5146247.html
3.https://blog.csdn.net/lliangdd/article/details/52092542
4.http://www.reibang.com/p/7b8c4dea6829
5.https://www.cnblogs.com/gumuzi/p/5711495.html
6.https://www.cnblogs.com/dump/p/9238543.html
7.https://blog.csdn.net/asd104/article/details/80158147
8.https://segmentfault.com/a/1190000017827680