主機配置說明:
192.168.136.101 mysql01 centos7.9 2C4G 192.168.136.102 mysql02 centos7.9 2C4G 防火牆主機互相放行 firewall-cmd --zone=public --permanent --add-rich-rule='rule family="ipv4" source address="192.168.136.101" accept' |
兩臺主機的配置都是一樣,操作也一樣,同步配置即可
1、原始碼包下載,下載帶boost,不然這個boost有的搞,小白不建議嘗試
MySQL :: Download MySQL Community Server (Archived Versions)
2、安裝需要的編譯包
yum install -y gcc gcc-c++ cmake bison ncurses-devel perl openssl-devel
3、開始編譯安裝
cmake . -DCMAKE_INSTALL_PREFIX=/data01/mysql/mysql -DMYSQL_UNIX_ADDR=/data01/mysql/mysql/mysql.sock -DSYSCONFDIR=/data01/mysql/conf -DSYSTEMD_PID_DIR=/data01/mysql/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/data01/mysql/mysql/data -DWITH_BOOST=/root/source/mysql/mysql-5.7.44/boost -DWITH_SYSTEMD=1
cmake編譯成功後是這個截圖
然後開始安裝
make -j4 && make install # 大概要20分鐘以上,我這裡實際花了十幾分鍾
# 新增一個mysql使用者
useradd -s /sbin/nologin mysql
# 配置MySQL的配置檔案
vi /data01/mysql/conf/my.cnf
[mysqld] #服務全域性設定
user=mysql #設定管理使用者
basedir=/data01/mysql/mysql #指定資料庫的安裝目錄
datadir=/data01/mysql/mysql/data #指定資料庫檔案的儲存路徑
port=3306 #指定埠
character-set-server=utf8 #設定伺服器字符集編碼格式為utf8
pid-file=/data01/mysql/mysql/mysqld.pid #指定pid 程序檔案路徑
socket=/data01/mysql/mysql/mysql.sock #指定資料庫連線檔案
bind-address = 0.0.0.0 #設定監聽地址,0.0.0.0代表允許所有,如允許多個IP需空格隔開
skip-name-resolve #禁用DNS解析
max_connections=2048 #設定mysql的最大連線數
default-storage-engine=INNODB #指定預設儲存引擎
max_allowed_packet=16M #設定資料庫接收的資料包大小的最大值
server-id = 1 #指定服務ID號
# 修改安裝目錄的許可權所屬
chown mysql:mysql -R /data01/mysql/
# 初始化資料庫
/data01/mysql/mysql/bin/mysqld --initialize --user=mysql -–basedir=/data01/mysql/mysql -–datadir=/data01/mysql/mysql/data
# 記錄返回的初始密碼
# 啟動資料庫
cp /data01/mysql/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
chmod 755 /usr/lib/systemd/system/mysqld.service
cp /data01/mysql/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
chmod 755 /usr/lib/systemd/system/mysqld.service
# 修改mysqld.service加上下面的兩個路徑
/data01/mysql/mysql/bin/mysqld --daemonize --pid-file=/data01/mysql/mysql/mysqld.pid --basedir=/data01/mysql/mysql --datadir=/data01/mysql/mysql/data(這個改成下面的,sock配置就能正確載入位置了)
/data01/mysql/mysql/bin/mysqld --defaults-file=/data01/mysql/conf/my.cnf --daemonize
systemctl daemon-reload
systemctl start mysqld
# 登入檢查資料庫是否可用(輸入初始化的安裝密碼)
mysql -uroot -p -h localhost -P3306 (這裡的sock檔案沒有在指定的安裝目錄,後面研究一下)
find / -name mysql.sock
mysql -uroot -p -h localhost -P3306 -S /var/lib/mysql/mysql.sock
# 接下可以修改root密碼和配置其他使用者管理操作
alter user root@localhost IDENTIFIED BY 'xxxx';
# 接下來就可以愉快的玩耍了
4、配置各種日誌記錄
# 開啟慢查詢日誌記錄
slow_query_log = 1
slow_query_log_file = /data01/mysql/mysql/logs/slow_log/mysql-slow.log
long_query_time = 2
# 開啟錯誤日誌輸出記錄
log_error= /data01/mysql/mysql/logs/error.log
# 開啟binlog日誌記錄
log_bin = /data01/mysql/mysql/logs/binlog/mysql-bin.log
max_binlog_size = 10M
expire_logs_days = 7
5、開始配置主從複製
# 首先兩個主機同步配置一個管理賬號,用於配置主從複製
CREATE USER 'rep'@'xxxx' IDENTIFIED BY 'Kab5Z%i1wZ$fWvo5';
CREATE USER 'rep'@'xxxxxx' IDENTIFIED BY 'Kab5Z%i1wZ$fWvo5';
grant all on *.* to 'rep'@'xxxxx';
grant all on *.* to 'rep'@'xxxxx';
# 用上面的賬號密碼配置主從同步
登入主節點,檢視當前的binlog檔案和post位置
show master status;
然後配置下面的語句,登入到從節點輸入配置
CHANGE MASTER TO
MASTER_HOST='xxxxx',
MASTER_USER='rep',
MASTER_PASSWORD='Kab5Z%i1wZ$fWvo5',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;
start slave;
show slave status;
主從配置異常:Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
這裡由於我的兩個主機,是直接cope安裝目錄過去的,所有這個auto.cnf配置檔案時一樣的,需要修改裡面的uuid值,可以透過selec uuid()獲取一個uuid,然後將這個uuid值配置到auto.cnf檔案裡面,然後重啟mysql服務,然後重新配置主從連線
6、開始驗證主從配置是否生效
在主庫中建立表,寫入資料等操作,檢視主從是否可以正常