nginx与mysql
1.mysql的安装
安装环境依赖性
解压安装三部曲
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysql.sock -DWITH_INNOBASE_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DWITH_EXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_unicode_ci -DWITH_BOOST=/root/data/mysql-5.7.36/boost/boost_1_59_0
添加指令方便调用
复制启动脚本
备份配置文件
修改 vim my.cnf
新建用户
安全初始化
初始化命令
安装图形化的mysql
进入nginx conf配置文件 设置
修改php主配置文件
pdo socket
mysqli安装成功
2.mysql用户与授权
给repl用户授权并且设定密码
3.mysql主从复制
异步同步
开启两个主机 安装rpm mysql包
yum install -y mysql-community-client-5.7.33-1.el7.x86_64.rpm mysql-community-common-5.7.33-1.el7.x86_64.rpm mysql-community-libs-5.7.33-1.el7.x86_64.rpm mysql-community-libs-compat-5.7.33-1.el7.x86_64.rpm mysql-community-server-5.7.33-1.el7.x86_64.rpm
修改配置文件 修改后记得重启
另一台主机 不与master主机一样即可
在此强调重启
复制主机端 mysql 中
CHANGE MASTER TO MASTER_HOST=‘192.168.0.206’, MASTER_USER=‘repl’, MASTER_PASSWORD=‘Pp0313…’,MASTER_LOG_FILE=‘mysql-bin.000001’, MASTER_LOG_POS=595;
开启slave两个yes代表成功
实验结果 主服务器 写入
复制从服务主机 收到实时情况
GTID
主服务器 1vim /etc/my.conf重启服务
从服务器 2 同样配置
显示gtid信息 成功
传输A→B→C
主服务器上 导入test表格 到 dump.db 然后scp复制到 新服务器
新服务器 3 上创建表格 然后修改
配置服务器3 配置与上面相同
导入主服务器表格
B给C 服务器2 需要 给 3服务器
服务器2vim /etc/my.conf 添加 然后重启
mysql中给用户权限 作C的master
服务器3 mysql设置
至此 传输A→B→C 成功
主服务器1 为 2的master 2为3的master
半同步复制
三台服务器 123
1主 2 从
首先 做好 配置
两个从服务器分别配置 到 主服务器的ip 3个服务器上 开启 半同步master 并且重启slave如果2 3服务器 停止io slave 那么 主机 1 将会缓存 并且记录没有半同步的数据
开启io slave 后 将会 将没有同步的数据 同步
**主服务器 写入数据 服务器 端 可以设定 一个时间延迟接收 **
服务器2上实验
主服务器插入
设定延迟服务端 显示 落后于 主机端 19 倒计时11秒
这个延迟操作可以 当主服务器 错误删除 时 可以 利用延迟时间 做备份并行复制配置与调优
slave服务器 2 3 端 vim /etc/my.cnf 改完重启
设置好后 大大减少延迟率solw_log
慢查询
激活
运行一个慢 语句查看 找出 慢语句
这个功能 可以企业中查询 数据库 语句缓慢 的语句 从而找到问题
组复制同步 多主模式
首先清空 mysql 配置文件
编写 vim /etc/my.cnf
disabled_storage_engines=“MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY”
server_id=1
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW
plugin_load_add=‘group_replication.so’
transaction_write_set_extraction=XXHASH64
group_replication_group_name=“aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa”
group_replication_start_on_boot=off
group_replication_local_address= “192.168.0.206:33061”
group_replication_group_seeds= “192.168.0.206:33061,192.168.0.207:33061,192.168.0.208:33061”
group_replication_bootstrap_group=off
group_replication_ip_whitelist=“192.168.0.0/24,127.0.0.1/8”
group_replication_single_primary_mode=OFF
group_replication_enforce_update_everywhere_checks=ON
group_replication_allow_local_disjoint_gtids_join=ON
登录调试,mysql设置用户 密码
修改配置
SET SQL_LOG_BIN=0;
CREATE USER rpl_user@‘%’ IDENTIFIED BY ‘Pp0313…’;
GRANT REPLICATION SLAVE ON . TO rpl_user@‘%’;
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;
CHANGE MASTER TO MASTER_USER=‘rpl_user’, MASTER_PASSWORD=‘Pp0313…’ FOR CHANNEL ‘group_replication_recovery’;
SET GLOBAL group_replication_bootstrap_group=ON; 此设置只需要 主机服务端
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;
SELECT * FROM performance_schema.replication_group_members;
服务器 2 3 端 同样设置 大致相同
sever id 不要相同 local address设置 当前ip
服务器3
创建完成 三个主机都可以改写 同时同步router mysql路由器
安装
修改配置文件
destinations 写入自己的三个服务器 ip
重启服务
可以 负载均衡链接
MHA集群架构
首先创建一个 一主两从 以及一个控制端
主机服务端 vim /etc/my.cnf
服务器端 两个同样的配置
安装MH7
3 服务器 安装node
在 控制端 安装 manager 修改配置文件
创建一个目录 将两个配置文件 合并 复制过去
进入/etc/mha app1.conf 编辑
主服务器 1上 mysql 添加权限 配置完成
控制端 开始 检测 首先 给ssh 创建密钥免密链接 生成密钥
复制 /.ssh到三台服务器输入 masterha_check_ssh --conf=/etc/mha/app1.cnf 检测 ok表示成功
检测 rhel 脚本
MHA的故障切换主从服务器
手动切换 当服务器没问题时
masterha_master_switch --conf=/etc/mha/app1.cnf --master_state=alive --new_master_host=192.168.0.206 --new_master_port=3306 --orig_master_is_new_slave --running_updates_limit=10000
全部yes 切换成功
当服务器挂掉后 切换masterha_master_switch --master_state=dead --conf=/etc/mha/app1.cnf --dead_master_host=172.25.0.7 --dead_master_port=3306 --new_master_host=172.25.0.6 --new_master_port=3306 --ignore_last_failover
故障切换后 换产生一个 文件
这个文件会禁止 自动切换 锁定住 当此文件存在 需要删除 才可以 切换主从服务器故障自动切换 打一个指令到后台
停掉主服务端 mysql 控制端 自动切换
创建一个 vip地址 使其可以保证 服务器的使用
使用脚本
修改一些内容
手动切换一次 主服务器 ip addr 可以看到 虚拟主机 100 已经添加
100 端 mysql 可以 正常链接在此 输入自动切换 指令打入后台
停掉主机端后 自动切换
虚拟主机 100 也到了 新的主机端中
并且 mysql 100 用户 会重新链接 重新获得使用权