龙空技术网

Kubernetes 集群搭建Mysql主从服务

简简单单程序员 517

前言:

今天同学们对“php排序mysql排序算法”大概比较关心,我们都想要知道一些“php排序mysql排序算法”的相关内容。那么小编同时在网络上搜集了一些关于“php排序mysql排序算法””的相关内容,希望咱们能喜欢,兄弟们快快来了解一下吧!

IT行业的核心在于数据。确保数据在各种情况下的安全性,就需要我们建立健全的数据备份策略。在测试环境中,我们通过MySQL的主从架构和定时任务保障数据的安全。

MySQL主从服务器需分布于两台不同的物理机,以避免单点故障。

MySQL主服务器利用binlog实现数据同步备份至从服务器。

定时任务将从服务器的数据dump保存到NAS服务器上。

这种处理方式确保了在主服务器损毁的情况下,我们能够迅速且无缝地切换到备份服务器,同时保证数据的实时有效性。若整个集群损毁,我们依然可以通过定时任务备份的数据恢复至某一时刻。

以下是实施步骤:

在虚拟机上创建MySQL数据文件夹。编写MySQL主服务器配置文件。通过Rancher创建MySQL主服务器Deployment。编写MySQL从服务器配置文件。通过Rancher创建MySQL从服务器Deployment。部署PHPMyAdmin远程访问数据库通过定时脚本将mysql数据备份到指定目录在虚拟机上创建MySQL数据文件夹

我们最开始是将mysql的目录也通过pv挂载的。但是发现这种配置下如果设备断电等异常情况会导致mysql Binlog文件或者其他的一些数据文件损坏引起mysql无法启动。而且通过网络挂载的mysql读写效率极低。所以我们目前的方案是将mysql的数据目录直接挂载到本地文件夹上。在通过备份来保证数据安全,而且这样比起通过网络挂载还提高了mysql的执行效率。

ssh root@10.20.10.21mkdir -p /data/k8s/mysql/# mysql 的主要目录cd /data/k8s/mysql/# mysql配置文件目录mkdir etc# mysql数据目录mkdir database# mysql日志mkdir logs# mysql redologmkdir redolog# mysql undologmkdir undolog
编写MySQL主服务器配置文件
[client]loose_default_character_set=utf8mb4    # 默认字符集user=root                               # 用户名password=${mysql_password}              # MySQL密码[mysqld]server-id=1                             # 服务器IDsql_mode=NO_ENGINE_SUBSTITUTION         # SQL模式lower_case_table_names=1                # 表名大小写敏感设置bind_address=0.0.0.0                    # 绑定地址port=3306                               # 端口号autocommit=1                            # 自动提交设置character_set_server=utf8mb4            # 服务器字符集skip_name_resolve=1                     # 跳过域名解析max_connections=20000                   # 最大连接数max_connect_errors=1000                 # 最大连接错误数tmpdir=/tmp                             # 临时文件目录long_query_time=10                      # 慢查询时间阈值slow_query_log=1                        # 慢查询日志开关slow_query_log_file=/logs/slow_query.log # 慢查询日志文件路径log_error=/logs/                        # 错误日志路径log_queries_not_using_indexes=1         # 记录未使用索引的查询log_slow_admin_statements=1             # 记录慢速管理语句log_slow_slave_statements=1             # 记录慢速从服务器语句log_throttle_queries_not_using_indexes=50 # 限制未使用索引查询的频率log_warnings=2                          # 日志警告级别log_timestamps=system                   # 日志时间戳格式log_bin=master-bin                      # 二进制日志文件名log_bin_index=master-bin.index          # 二进制日志索引文件名expire_logs_days=30                     # 日志过期天数min_examined_row_limit=100              # 最小检查行限制binlog-ignore-db=mysql                  # 忽略的数据库(binlog)binlog-ignore-db=information_schema     # 忽略的数据库(binlog)binlog-ignore-db=performance_schema     # 忽略的数据库(binlog)binlog_cache_size=8M                    # 二进制日志缓存大小sort_buffer_size=2M                     # 排序缓冲区大小tmp_table_size=64M                      # 临时表大小max_heap_table_size=64M                 # 最大堆表大小table_open_cache=6140                   # 表打开缓存数open_files_limit=12280                  # 打开文件限制数query_cache_type=ON                     # 查询缓存类型query_cache_size=64M                    # 查询缓存大小query_cache_limit=8M                    # 查询缓存限制
通过Rancher创建MySQL主服务器Deployment编写MySQL从服务器配置文件

参考主服务器的目录建设在10.20.10.22这台服务器上创建mysql目录。需要根据具体情况调整从服务器安装的虚拟机。尽量确保主服务和从服务器不在同一台物理机。

vi etc/my.cnf[client]loose_default_character_set=utf8mb4     # 默认字符集user=root                               # 用户名password=${mysql_password}              # MySQL密码[mysqld]server-id=2                             # 服务器IDsql_mode=NO_ENGINE_SUBSTITUTION         # SQL模式lower_case_table_names=1                # 表名大小写敏感设置bind_address=0.0.0.0                    # 绑定地址port=3306                               # 端口号autocommit=1                            # 自动提交设置character_set_server=utf8mb4            # 服务器字符集skip_name_resolve=1                     # 跳过域名解析max_connections=20000                   # 最大连接数max_connect_errors=1000                 # 最大连接错误数tmpdir=/tmp                             # 临时文件目录log_error=/logs/                        # 错误日志路径slow_query_log=1                        # 慢查询日志开关slow_query_log_file=slow_query.log      # 慢查询日志文件路径log_queries_not_using_indexes=1         # 记录未使用索引的查询log_slow_admin_statements=1             # 记录慢速管理语句log_slow_slave_statements=1             # 记录慢速从服务器语句log_throttle_queries_not_using_indexes=50 # 限制未使用索引查询的频率expire_logs_days=30                     # 日志过期天数long_query_time=10                      # 慢查询时间阈值min_examined_row_limit=100              # 最小检查行限制log_timestamps=system                   # 日志时间戳格式relay-log=slave-relay-bin               # 中继日志文件名relay-log-index=slave-relay-bin.index   # 中继日志索引文件名

通过Rancher创建MySQL从服务器Deployment

参考主服务器配置。只需要修改【指定主机运行所有 Pods】

部署PHPMyAdmin远程访问数据库

需要再Rancher的配置映射里增加phpmyadmin配置文件

<?phpdeclare(strict_types=1);// blowfish_secret是用于phpMyAdmin的cookie加密的密钥。为了安全起见,你需要生成一个足够强大且随机的字符串作为blowfish_secret。字符串长度应在32到64个字符之间。$cfg['blowfish_secret'] = '${}';$i = 0;$i++;$cfg['Servers'][$i]['auth_type'] = 'cookie';// 需要修改成rancher 服务发现中mysql主服务器的集群ip$cfg['Servers'][$i]['host'] = '';$cfg['Servers'][$i]['port'] = '3306';$cfg['Servers'][$i]['compress'] = false;$cfg['Servers'][$i]['verbose'] = 'master';$cfg['Servers'][$i]['AllowNoPassword'] = false;$i++;$cfg['Servers'][$i]['auth_type'] = 'cookie';// 需要修改成rancher 服务发现中mysql从服务器的集群ip$cfg['Servers'][$i]['host'] = '176.16.67.193';$cfg['Servers'][$i]['port'] = '3306';$cfg['Servers'][$i]['compress'] = false;$cfg['Servers'][$i]['verbose'] = 'backup';$cfg['Servers'][$i]['AllowNoPassword'] = false;

添加ingress

访问phpmyadmin

# 在主服务器上执行CREATE USER 'replication_user'@'%' IDENTIFIED BY 'your_password';GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%';FLUSH PRIVILEGES;
# 在从服务器上执行## 确保替换master_server_ip为主服务器的IP地址,## 并将your_password替换为步骤1中创建的复制用户的密码。CHANGE MASTER TO  MASTER_HOST='master_server_ip',  MASTER_USER='replication_user',  MASTER_PASSWORD='your_password',  MASTER_LOG_FILE='mysql-bin.000001',  MASTER_LOG_POS=0;# 启动同步进程START SLAVE;

通过定时脚本将mysql数据备份到指定目录

vi ~/.my.cnf# 允许免密登录[mysqldump]user=rootpassword=${mysql_password} [mysql]user=rootpassword=${mysql_password} 
vi ~/backup.sh#!/bin/shset -xnow_date=$(date +%Y-%m-%d)# 设置备份保留10天。delete_date=$(date -d"10 day ago" +%Y-%m-%d)echo "backup master db server"# mysql_host 可以是主服务也可以是从的。mkdir -p /mnt/mysql/backup/master/$now_datemysqldump --all-databases -h ${mysql_host} > /mnt/mysql/backup/master/$now_date/all.sqlgzip -c /mnt/mysql/backup/master/$now_date/all.sql > /mnt/mysql/backup/master/$now_date/all.sql.gzrm -rf /mnt/mysql/backup/master/$now_date/all.sqlbackup(){    echo "database name $1"    databaseName=$1    echo "backup master db server, datebase $databaseName"   # mysql_host 可以是主服务也可以是从的。    mysqldump $databaseName -h ${mysql_host} > /mnt/mysql/backup/master/$now_date/$databaseName.sql    gzip -c /mnt/mysql/backup/master/$now_date/$databaseName.sql > /mnt/mysql/backup/master/$now_date/$databaseName.sql.gz    rm -rf /mnt/mysql/backup/master/$now_date/$databaseName.sql}# 可以为某个库单独配置加快恢复速度backup ${DatabaseName}rm -rf /mnt/mysql/backup/master/$delete_date

标签: #php排序mysql排序算法 #mysql主从配置集群 #mysql集群和主从区别 #虚拟机mysql数据库 #虚拟机启动mysql服务