一、安裝mysql
1、下載
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz
2、解壓壓縮包到目標位置
tar xvzf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz
mv mysql-5.7.18-linux-glibc2.5-x86_64 /usr/local/
3、文件重命名
mv mysql-5.7.18-linux-glibc2.5-x86_64/ mysql
4、創建數據倉庫目錄
--/data/mysql 數據倉庫目錄
# mkdir /data/mysqldata
#ls /data/
5、新建mysql用戶、組及目錄
# ---新建一個msyql組
# useradd -r -s /sbin/nologin -g mysql mysql -d /usr/local/mysql ---新建msyql用戶禁止登錄shell
或者是:
[root@localhost mysql]# groupadd mysql
[root@localhost mysql]# useradd -r -g mysql mysql
6、改變目錄屬有者(授權)
#cd /usr/local/mysql
#pwd
#chown -R mysql .
#chgrp -R mysql .
#chown -R mysql /data/mysqldata
或者是
[root@001 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@001 mysql]# ldconfig
[root@001 mysql]# echo "PATH=$PATH:/usr/local/mysql/bin" > /etc/profile.d/mysql.sh
[root@001 mysql]# source /etc/profile.d/mysql.sh
[root@001 mysql]# chkconfig mysqld on
[root@001 mysql]# vim /etc/my.cnf
7、初始化mysqld
# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysqldata
此處需要注意記錄生成的臨時密碼,如上文結尾處的:>jf+sbhCQ3gV (後面會用到)
8、編輯配置文件及將mysql的服務腳本放到系統服務中,並配置環境變量讓系統可以直接使用mysql的相關命令
[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@localhost mysql]# ldconfig
[root@localhost mysql]# echo "PATH=$PATH:/usr/local/mysql/bin" > /etc/profile.d/mysql.sh
[root@localhost mysql]# source /etc/profile.d/mysql.sh
[root@localhost mysql]# chkconfig mysqld on
[root@localhost mysql]# vim /etc/my.cnf
basedir=/usr/local/mysql #mysql路徑
datadir=/data/mysqldata #mysql數據目錄
socket=/tmp/mysql.sock
user=mysql
server_id=1 #MySQLid 後面2個從服務器需設置不同
port=3306
9、啓動mysql
service mysqld start
如果報如下錯誤:
將 /etc/my.cnf文件改爲:
[mysqld]
basedir=/usr/local/mysql #mysql路徑
datadir=/data/mysqldata #mysql數據目錄
socket=/tmp/mysql.sock
user=mysql
server_id=1 #MySQLid 後面2個從服務器需設置不同
port=3306
#datadir=/var/lib/mysql
#ervice mysqld startsocket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
#[mysqld_safe]
#log-error=/var/log/mariadb/mariadb.log
#pid-file=/var/run/mariadb/mariadb.pid
#
10、重置mysql密碼(如果 輸入出事密碼時一直報錯請參考下面的解決方案,我第二次安裝時 輸入初始化密碼 報密碼不對的錯誤,所以就在網上又查瞭解決方案,記錄一下供自己和大家一起參考 這是參考博文的地址 https://blog.csdn.net/keepd/article/details/77151006)
執行步驟:
vi /etc/my.cnf
在末尾加上一行代碼
skip-grant-tables #跳過密碼登錄
保存退出
登錄mysql
mysql -u root
不要加 -p
修改密碼:
use mysql ;
mysql5.7 使用這個語法
update mysql.user set authentication_string=password('123456') where user='root' ;
flush privileges;
重啓mysql
systemctl restart mysql
刷新權限:FLUSH PRIVILEGES;
11、測試情況下關閉防火牆
service firewalld stop
線上情況開放3306端口
先登錄到mysql
mysql> use mysql;
mysql> update user set host = '%' where user = 'root'; #按實際情況設置
mysql> flush privileges;
上面步驟,解決遠程連接時報的 1130 錯誤
創建數據庫 stu 主從測試的時候用
create database stu;
create table stu(id int,age int);
ps:第二次 使用初始化密碼登錄時出錯,解決方案 沒有出錯 可直接略過:
1,停止mysql服務
systemctl stop mysqld.service
2,修改配置文件無密碼登錄
vi /etc/my.cnf
在最尾部加上
skip-grant-tables
保存
3,啓動mysql
systemctl start mysqld.service
4,登錄musql
mysql -u root
此處注意不要加-p
5,修改密碼,mysql5.7用此語法
use mysql ;
update mysql.user set authentication_string=password('123456') where user='root' ;
6,回到第二步驟去掉加上的
skip-grant-tables
保存 重啓mysql就ok了
#########################################################################
其實默認安裝完了mysql後或在日誌中生成一個默認的密碼 /var/log/mysqld.log 中
拿到默認密碼後登錄mysql 進行密碼重新設置
set password=password('you password');
如果密碼級別與默認的級別要求不符時候會報
Your password does not satisfy the current policy requirements
此時需要修改級別與最小的默認密碼位數
set global validate_password_policy=0;
set global validate_password_length=4;
然後在進行設置密碼就好了
出自:https://blog.csdn.net/keepd/article/details/77151006
ps結束
二、數據庫主從複製開始(提前準備兩臺mysql服務器-->虛擬機):192.168.131.131(slave)和192.168.131.134(master)
1、master上開啓binlog日誌,配置如下:
vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysqldata
socket=/tmp/mysql.sock
user=mysql
server-id=1
port=3306
server-id=1 #服務器的唯一標識 靠它區分是不同的服務器
log-bin=mysql-bin #打開日誌(主機需要打開),這個mysql-bin也可以自定義,這裏也可以加上路徑
#作爲主機的配置
binlog-do-db=stu#要給從機同步的數據庫(我自己創建)
binlog-ignore-db=mysql #不給從機同步的庫(多個寫多行)
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
expire_logs_days=7 #自動清理 7 天前的log文件,可根據需要修改
[root@001 employees_db]# service mysqld restart #重啓數據庫
# service mysqld restart #重啓數據庫
測試log_bin是否成功開啓
mysql> show variables like '%log_bin%';
2、master的數據庫中建立備份賬號:backup爲用戶名,%表示任何遠程地址,如下表示密碼爲123456的任何遠程地址的backup都可以連接master主機
mysql> grant replication slave on *.* to 'backup'@'%' identified by '123456';
mysql> use mysql
mysql> select user,authentication_string,host from user;
3、查看master狀態
mysql> show master status\G #
有3個重要的地方已經畫出來了。查看主服務器上當前的二進制日誌名和偏移量值這裏的file 和position 要和從上的一致
導出master中的數據,然後導入slave 中
在master主機上:
[root@localhost /]# mysqldump -uroot -p123456 -hlocalhost stu > /opt/stu.bak
mysqldump: [Warning] Using a password on the command line interface can be insecure.
需要安裝插件:
yum install openssh-clients -y #(注:slave也需要安裝)
講備份發給slave
[root@localhost /]# scp /opt/stu.bak [email protected]:/opt/
[email protected]'s password:
stu.bak 100% 1811 1.7MB/s 00:00
配置slave:
vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql #mysql路徑
datadir=/data/mysqldata #mysql數據目錄
socket=/tmp/mysql.sock
user=mysql
server_id=2 #MySQLid 後面2個從服務器需設置不同
port=3306
#加上以下參數可以避免更新不及時,SLAVE 重啓後導致的主從複製出錯。
read_only = 1
master_info_repository=TABLE
relay_log_info_repository=TABLE
然後將master傳過來的備份導入到slave mysql數據庫中,slave上的stu數據庫不存在則先創建,然後再導入
[root@localhost mysql]# mysql -uroot -p123456 -hlocalhost stu < /opt/stu.bak
[root@localhost mysql]# service mysqld restart
登錄slave數據庫,並做如下設置
[root@002 ~]# mysql -uroot -p123456
mysql> stop slave;
mysql> change master to
-> master_host='192.168.1.222', #master的ip
-> master_user='backup', #備份用戶名
-> master_password='123456', #密碼
-> master_log_file='mysql-bin.000004', #上面截圖,且要與master的參數一致
-> master_log_pos=154; #上面截圖,且要與master的參數一致
mysql> start slave;
#上面截圖,且要與master的參數一致
-> master_log_pos=154; #上面截圖,且要與master的參數一致
mysql> start slave;
查看slave從機的狀態
mysql> show slave status \G
兩個yes表示設置成功
關閉掉主數據庫的讀取鎖定,並測試
mysql> unlock tables;
主從兩個參數必須一致
測試:
1、主庫 在數據庫stu中創建一個新的表 從庫跟着創建一個相同的表
2、主庫 在新建的表中添加數據, 從庫新建的表中也會自動添加數據
3、從庫關閉 我直接將從庫虛擬機關閉 ,主庫添加數據,從庫重啓後,也會自動添加數據
以上實驗我已經驗證過了,中間遇到好多坑,由於過程被我clear了所以,沒有把坑列出來,多百度吧。
我是按着上面的步驟試驗成功的。
中間借鑑了兩個文章:
https://www.cnblogs.com/imweihao/p/7301537.html
https://www.cnblogs.com/dengshihuang/p/8029092.html
對我幫助很大