一、安裝mysql
1.1 mysql下載鏈接:
https://downloads.mysql.com/archives/community/
1.2 解壓包并創建相應的數據目錄
tar -xvf mysql-8.2.0-linux-glibc2.28-x86_64.tar.xz -C /usr/local
cd /usr/local/
mv mysql-8.2.0-linux-glibc2.28-x86_64/ mysql
mkdir /usr/local/mysql/data/
groupadd mysql
useradd mysql -g mysql
chown -R mysql:mysql /usr/local/mysql
1.3 添加配置文件
vim my.cnf [client]
port = 3306
socket = /usr/local/mysql/mysql.sock[mysql]
prompt = "\u@mysqldb \R:\m:\s [\d]> "
no_auto_rehash
loose-skip-binary-as-hex[mysqld]
user = mysql
port = 3306
#主從復制或MGR集群中,server_id記得要不同
#另外,實例啟動時會生成 auto.cnf,里面的 server_uuid 值也要不同
#server_uuid的值還可以自己手動指定,只要符合uuid的格式標準就可以
server_id = 3306
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
socket = /usr/local/mysql/mysql.sock
pid-file = /var/run/mysqld/mysqld.pid
character_set_server = UTF8MB4
skip_name_resolve = 1
# 不區分大小寫
lower_case_table_names=1#log settings
log_timestamps = SYSTEM
log-error = /var/log/mysqld.log
log_error_verbosity = 3
slow_query_log = 1
log_slow_extra = 1
log_slave_updates=1 # 事務記錄到binlog,否則無法開啟并發復制
long_query_time = 0.1
log_queries_not_using_indexes = 1
log_throttle_queries_not_using_indexes = 60
min_examined_row_limit = 100
log_slow_admin_statements = 1
log_slow_slave_statements = 1
log_bin = binlog
binlog_format = ROW
sync_binlog = 1 #MGR環境中由其他節點提供容錯性,可不設置雙1以提高本地節點性能
binlog_cache_size = 4M
max_binlog_cache_size = 2G
max_binlog_size = 1G
binlog_rows_query_log_events = 1
binlog_expire_logs_seconds = 604800
#MySQL 8.0.22前,想啟用MGR的話,需要設置binlog_checksum=NONE才行
# binlog_checksum = CRC32
gtid_mode = ON
enforce_gtid_consistency = TRUE#myisam settings
key_buffer_size = 32M
myisam_sort_buffer_size = 128M[mysqldump]
quick
1.4 初始化mysql
cd /usr/local/mysql/bin/./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data --user=mysql --initialize
1.5 啟動mysql
#將mysql啟動腳本拷貝到系統目錄
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
#將mysql加到啟動服務列表
chkconfig --add mysql
#開機啟動
chkconfig mysql on
#啟動mysql
service mysql start如果遇到報錯:
Starting MySQL...... ERROR! The server quit without updating PID file (/var/run/mysqld/mysqld.pid).
解決:
mkdir /var/run/mysqld
chown -R mysql:mysql /var/run/mysqld
service mysql start #啟動之后看到SUCCESS,可以查看端口和進程確保正常
1.6 查看初始化的密碼,修改root密碼
查看密碼
cat /var/log/mysqld.log | grep password | grep root@localhost
修改密碼
/usr/local/mysql/bin/mysqladmin -u root -p'lu7&uMfsK(Rs' password 'root'
ln -s /usr/local/mysql/bin/mysql /usr/bin
?mysql -uroot proot
Enter password:
二、mysql主從復制搭建
2.1 兩臺機器配置解析
vim /etc/hosts
172.26.21.26 jtkl-ext-mysql1
172.26.21.27 jtkl-ext-mysql2
2.2 主庫上操作
vim /etc/my.cnf
[mysqld]
log-bin=/var/log/mysql/mysql-bin #添加此配置
server-id=26 #修改server-id 3306--->26
創建完日志目錄、授權之后重啟服務
mkdir /var/log/mysql
chown mysql.mysql /var/log/mysql
service mysql stop
service mysql start
mysql -uroot -proot
執行sql
mysql> CREATE USER 'mysql'@'%' identified by 'mysql';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'mysql'@'%';
mysql> flush privileges;
mysql> show master status\G #記錄File和Positoin后面的內容
2.3 從庫上操作
vim /etc/my.cnf
[mysqld]
server-id=27 #修改server-id 3306--->27
重啟服務
service mysql stop
service mysql start
?mysql -uroot proot
mysql> \e
粘貼以下內容:根據實際修改并刪除注釋CHANGE MASTER TO
MASTER_HOST='jtkl-ext-mysql1', #修改為master的主機名
MASTER_USER='mysql', #主庫上創建的用戶
MASTER_PASSWORD='mysql', #用戶密碼
MASTER_LOG_FILE='binlog.000005', #主庫上show master status\G顯示的file的內容
MASTER_LOG_POS=702; #主庫上show master status\G顯示到Positoin的內容以上內容wq保存,退出后
-> ;mysql> start slave;
mysql> show slave status\G #查看雙yes,則成功。否則失敗
2.4 測試:
主庫執行
mysql> create database test;
從庫查看:
mysql> show databases;