MySQL版本:mysql 5.7.29
下载链接:https://downloads.mysql.com/archives/community/
注:建议使用迅雷下载,速度较快
#查看磁盘情况
lsblk
#查看剩余情况
vgs
#2个步骤:
#1、创建逻辑分区
lvcreate -L 140G -n lvmysql rootvg
#2、格式化分区
mount /dev/rootvg/lvmysql /home/mysql
更多命令及自动挂盘请参考:https://blog.csdn.net/dongyuxu342719/article/details/82702357
# 查看:
dmesg | grep scheduler
# CentOS7 io调度规则默认为“deadline”,所以不需要修改
vim /etc/sysctl.conf
#配置交换区
vm.swappiness =1
#保存后使其生效
sysctl -p
操作系统对mysql用户注意以下参数的设置,该设置为必须的设置:
vim /etc/security/limits.d/mysql.conf
mysql soft nofile 65535
mysql hard nofile 65535
mysql soft nproc 65535
mysql hard nproc 65535
# 查看当前防火墙状态
firewall-cmd --state
#关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
# 关闭selinux
# 使用setenforce命令可以切换SELinux应用模式
# enforcing或1:强制模式
# permissive或0:允许模式
setenforce 0
vim /etc/selinux/config
# 将 SELINUX=enforcing更改为 SELINUX=disabled
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
cat /etc/selinux/config
# 显示结果为
#SELINUX=disabled
#SELINUXTYPE=targe
关闭numa,解决mysql服务器swap严重以及内存泄漏的问题,需要注意的是Mysql 5.7.9引入了iinnodb_numa_interleave参数,MySQL自己解决了内存分类策略的问题前提是服务器支持numa,也就是说如果使用MySQL5.7.9之后的版本,可以不用关闭服务器的numa
# 修改grab,conf
# 1、 在/etc/default/grub 文件中修改 kernel行:
vi /etc/default/grub
GRUB_CMDLINE_LINUX 后添加 numa=off
# 2、重建配置文件
grub2-mkconfig -o /etc/grub2.cfg
# 3、重启操作系统
reboot
rpm -qa |grep mysql -i
rpm -e --nodeps msyql-xxx-5.1..xx86_64
# 把旧版本的mysql 配置文件移动
mv /etc/my.conf /etc/my.conf.`date+%Y%m%d`
#创建存放mysql的目录
mkdir /opt/mysql_base/
# 找到存放 mysql -tar包的目录
cd /home/mysqluser
tar zxf mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz -C /opt/mysql_base/
mv /opt/mysql_base/mysql-5.7.29-linux-glibc2.12-x86_64 /opt/mysql_base/mysql-5.7.29
组名:mysql
组id:20000
用户名:mysql
用户id:20000
用户home目录:/home/mysql
groupadd -g 20000 mysql
useradd -u 20000 -d /home/mysql -g mysql -m mysql
passwd mysql
mkdir /home/mysql/data
cd /home/mysql/data
mkdir mysql_tmp #存放临时数据
mkdir mysql_backup #存放数据库备份
mkdir -p mysql_data/4306 #存放数据
mkdir -p mysql_log/mysql-bin #存放binlog
mkdir mysql_log/relay-bin #relay log的存放位置
mkdir /opt/mysql #存放mysql介质
chown mysql.mysql -R /home/mysql
chown mysql.mysql -R /opt/mysql_base
chown mysql.mysql -R /opt/mysql
在 opt/mysql_base/mysql-5.7.29 下创建my.cnf
su mysql #切换用户
cd /opt/mysql_base/mysql-5.7.29
vi my.cnf
# 如何有上传的my.cnf,直接cp过来,命令是
cp /home/my.cnf /opt/mysql_base/mysql-5.7.29/
[client]
port = 4306
socket=/home/mysql/data/mysql_data/mysql.sock
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
server-id=8008 ## 复制ID,主备机保持唯一
port = 3306
user=mysql
basedir=/opt/mysql_base/mysql-5.7.29
datadir=/home/mysql/data/mysql_data/4306
tmpdir=/home/mysql/data/mysql_tmp
socket=/home/mysql/data/mysql_data/mysql.sock
pid-file=mysqld.pid
default-storage-engine = INNODB
lower_case_table_names = 1
transaction_isolation = READ-COMMITTED
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
# connection
back_log = 400
max_connections = 1000
interactive-timeout = 28800
wait_timeout = 29900
slave_net_timeout = 300
skip_name_resolve = on
# binlog
log_bin=/home/mysql/data/mysql_log/mysql-bin/mysql-bin.index
relay-log=/home/mysql/data/mysql_log/relay-bin/relay-bin.index
expire_logs_days=7
binlog_cache_size = 8M
binlog_format = ROW
relay_log_purge = 1
log-bin-trust-function-creators = 1
binlog_group_commit_sync_no_delay_count = 20
binlog_group_commit_sync_delay = 10
#replica
gtid_mode = on
enforce_gtid_consistency = 1
log_slave_updates = 1
slave_parallel_type=LOGICAL_CLOCK
slave_parallel_workers = 8
master_info_repository=TABLE
relay_log_info_repository=TABLE
slave_preserve_commit_order=on
## Semi sync Config
plugin-load = "validate_password.so;rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
rpl_semi_sync_master_enabled = 0
rpl_semi_sync_slave_enabled = 1
rpl_semi_sync_master_timeout = 10000
rpl_semi_sync_master_wait_for_slave_count = 1
rpl_semi_sync_master_wait_no_slave = 0
rpl_semi_sync_master_wait_point = AFTER_SYNC ##默认就是AFTER_SYNC
#password plugin
validate_password_policy = STRONG
validate-password=FORCE_PLUS_PERMANENT
#caches & limits
bulk_insert_buffer_size = 8M
innodb_buffer_pool_size = 4G #适当调整,可以选取物理内存的70%
innodb_buffer_pool_instances = 8
innodb_log_buffer_size = 32M
innodb_sort_buffer_size = 4M
join_buffer_size = 4M
sort_buffer_size = 4M
key_buffer_size = 16M
innodb_max_dirty_pages_pct = 50
max_allowed_packet = 128M
max_heap_table_size = 16M
read_buffer_size = 1M ##推荐 8-16G 配 1M
read_rnd_buffer_size = 32M
open-files-limit = 10240
table-definition_cache = 4096
query_cache_type = 0
table_open_cache = 4096
table_open_cache_instances = 16
innodb_temp_data_file_path=ibtmp1:12M:autoextend:max:20G
# thread
thread_cache_size = 256
innodb_thread_concurrency = 128
innodb_io_capacity = 5000
innodb_io_capacity_max = 10000
innodb_write_io_threads = 8
innodb_read_io_threads =8 ##推荐核数的两倍
innodb_purge_threads = 4
innodb_page_cleaners = 4
# innodb log
innodb_flush_method = O_DIRECT
innodb_autoextend_increment = 128
innodb_flush_log_at_trx_commit = 1
innodb_print_all_deadlocks
sync_binlog = 1
# innodb file
innodb_data_file_path = ibdata:2G:autoextend
innodb_file_per_table = 1
tmp_table_size = 16M
innodb_log_file_size = 2048M
innodb_undo_tablespaces = 3
innodb_undo_log_truncate = 1
innodb_online_alter_log_max_size = 1G
# logging
slow_query_log = 1
log_timestamps = SYSTEM
log-error=mysql-error.log
slow_query_log_file=mysql_slow.log
lc_messages_dir=/opt/mysql_base/mysql-5.7.29/share
# Recommended in standard MySQL setup
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
# performance_schema settings
performance-schema-instrument='memory/%=COUNTED'
performance_schema-digests_size = 40000
performance_schema_max_table_handles = 40000
performance_schema_max_table_instances = 40000
performance_schema_max_sql_text_length = 4096
performance_schema_max_digest_length = 4096
其中主库、从库部分不同
# 主库
server-id=8008 ## 复制ID,主备机保持唯一
## Semi sync Config
rpl_semi_sync_master_enabled = 1
rpl_semi_sync_slave_enabled = 0
# 从库
server-id=8009 ## 复制ID,主备机保持唯一
## Semi sync Config
rpl_semi_sync_master_enabled = 0
rpl_semi_sync_slave_enabled = 1
# 从库
server-id=8010 ## 复制ID,主备机保持唯一
## Semi sync Config
rpl_semi_sync_master_enabled = 0
rpl_semi_sync_slave_enabled = 1
# 使用mysql用户
/opt/mysql_base/mysql-5.7.29/bin/mysqld --defaults-file=/opt/mysql_base/mysql-5.7.29/my.cnf --initialize --user=mysql
在 /home/mysqluser/data/mysql_data/4306/mysql-error.log 中查看初始化完成后生成的随机密码,记得保存下来,修改root密码时使用。
/opt/mysql_base/mysql-5.7.29/bin/mysqld_safe --defaults-file=/opt/mysql_base/mysql-5.7.29/my.cnf &
# 建立软连接
ln -s /home/mysql/data/mysql_data/mysql.sock /tmp/mysql.sock
# 配置一下mysql的环境变量
vi /etc/profile.d/mysql.sh
# mysql.sh添加如下内容
MYSQL_HOME=/opt/mysql_base/mysql-5.7.29
PATH=$PATH:$MYSQL_HOME/bin
export MYSQL_HOME PATH
# 让配置文件生效
source /etc/profile
# 登录mysql
mysql -uroot -p
# 修改密码
alter user 'root'@'localhost' identified by '1qazZSE#39;;
在主库上运行如下命令,新建用户 repl 并授权
create user 'repl'@'182.%' identified by '1qazZSE#39;;
grant replication slave on *.* to 'repl'@'182.%';
从安全方面考虑,可以对ip进行范围限制,不适用%
# 使用场景 --第一次搭建主从数据库时,用于主库的初始化binglog操作;
mysql> reset master;
# 展示binlog 日志文件
mysql> show master statusG
mysql> change master to master_host='192.168.222.224',
master_port=3306,
master_user='repl',
master_password='1qazZSE#39;,
master_auto_position=1;
在从库上启动复制并检查 slave状态
mysql> start slave;
mysql> show slave statusG;
查看Slave_IO_State、Slave_SQL_Running
主库:
mysql> show status like 'rpl_semi_sync_master_status';
+-----------------------------+-------+
| Variable_name | Value |
+-----------------------------+-------+
| Rpl_semi_sync_master_status | on |
+-----------------------------+-------+
从库:
mysql> show global status like 'rpl_semi_sync_slave_status';
+-----------------------------+-------+
| Variable_name | Value |
+-----------------------------+-------+
| Rpl_semi_sync_master_status | on |
+-----------------------------+-------+
注:如果3.2 步骤出错,在重新操作3.1之前,需要使用以下命令重置:
stop slave;
reset slave;
主节点建立数据库,并插入一条 @数据:
create database testdb;
use testdb;
create table test_tb(id int(3),name char(10));
insert into test_tb values(001,'hi');
show databases;
use testdb;
select * from test_tb;
当前选择的版本是2.2版本,版本号为 percona-toolkit-2.2.20-1,安装rpm包之前需要安装如下依赖包
cd /home/mysqluser/PerconaToolkit_depend
# 批量安装 依赖
rpm -Uvh --force --nodeps *rpm
cd /home/mysqluser/PerconaToolkit
# 安装PerconaToolkit
rpm -ivh percona-toolkit-2.2.20-1.noarch.rpm
# 验证是否安装成功
pt-query-digest --help
当前选择的版本是2.4.7版本,版本号为 percona-xtrabackup-2.4.7,
tar zxvf percona-xtrabackup-2.4.7-Linux-x86_64.tar.gz -C /opt
mv percona-xtrabackup-2.4.7-Linux-x86_64 percona-xtrabackup-2.4.7
ln -s /opt/percona-xtrabackup-2.4.7/bin/* /usr/bin/
xtrabackup --version # 验证版本
页面更新:2024-04-02
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号