概述
- 环境描述:适用于新环境部署
安装目录:/data/mysql
数据目录:/data/mysqldata
端口号 :3306
socket :/data/mysqldata/mysql.sock - 补充说明
若为有数据的单库切换为主从,在进行主从搭建操作前,需将主库数据备份还原至从库,再进行锁表建立主从
安装步骤
主从库操作
1、创建mysql用户组(无需设置密码)
groupadd mysql
useradd -g mysql -m mysql
2、下载mysql安装包并解压(放于/data/package)
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz
tar -zxf mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.25-linux-glibc2.12-x86_64 /data/mysql
3、建立数据目录
mkdir /data/mysqldata
chown -R mysql:mysql /data/mysqldata
chmod -R 777 /data/mysqldata
4、初始化,记下初始化后的随机密码
cd /data/mysql
./bin/mysqld --user=mysql --basedir=/data/mysql --datadir=/data/mysqldata --initialize
5、配置配置文件
注意 :主从库server-id一定要不一样
vim /etc/my.cnf
[client]
port = 3306
socket = /data/mysqldata/mysql.sock
[mysqld]
#skip-grant-tables
basedir = /data/mysql
port = 3306
socket = /data/mysqldata/mysql.sock
datadir = /data/mysqldata
server-id = 1
log-bin = mysql-bin #打开二进制功能,MASTER主服务器必须打开此项
binlog-format=mixed
#gtid-mode=on
#enforce-gtid-consistency=true
master-info-repository=TABLE
slave-parallel-workers=0
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log_events=1
expire_logs_days=7
max_binlog_size=1024M #binlog单文件最大值
max_connections = 3000
max_connect_errors = 30
character-set-server=utf8 #服务端默认字符集
wait_timeout=1800 #请求的最大连接时间
interactive_timeout=1800 #和上一参数同时修改才会生效
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES #sql模式
max_allowed_packet = 10Md
bulk_insert_buffer_size = 8M
query_cache_type = 1
query_cache_size = 128M
query_cache_limit = 4M
key_buffer_size = 256M
read_buffer_size = 16K
skip-name-resolve
slow_query_log=1
long_query_time = 6
slow_query_log_file=slow-query.log
relay-log = /data/mysqldata/relay-bin
slave-skip-errors = 1032,1062
replicate-ignore-db =mysql
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 16M
innodb_buffer_pool_size=2G #此项根据实际修改,我这边4c8g通过性能测试选择的最佳大小 不加此项默认为128M
[mysql]
auto-rehash
[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
[mysqldump]
quick
max_allowed_packet = 16M
6、启动mysql
cd /data/mysql
cp -a ./support-files/mysql.server /etc/init.d/mysqld
/etc/init.d/mysqld start
7、添加环境变量
vim /etc/profile #交互式
vim /etc/bashrc #非交互式-加此环境变量为了后续自动化脚本连接数据库操作做准备
export PATH=$PATH:/data/mysql/bin
8、修改mysql root密码,并授予远程登录权限--初次登录为初始化密码
$mysql -u root -p
mysql>alter user user() identified by '***'
远程登录授权
mysql>grant all privileges on *.* to root@'%' identified by '**';
主库操作
1、创建主从复制slave 账号
mysql>grant replication slave on *.* to slave@'%' identified by '***';
2、锁表,查看master状态
mysql>flush tables with read lock;
mysql>show master status;
记录mysql-bin以及pos位置
从库操作
1、change master
msyql>CHANGE MASTER TO
MASTER_HOST = 'host', #另一台机器的地址
MASTER_PORT = 3306, #另一台机器的端口
MASTER_USER = 'slave',#另一台机器上第一步分配的用户名
MASTER_PASSWORD = 'slave', #另一台机器上第一步分配的密码
MASTER_LOG_FILE = 'mysql-bin.000001',#另一台机器上执行SHOW MASTER STATUS得到的文件名
MASTER_LOG_POS = 192; #另一台机器上执行SHOW MASTER STATUS得到的偏移量
2、启动主从复制
主服务器执行
mysql>start slave
3、检查主从状态
mysql>show slave status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes