ubuntu 16.04配置MySQL主从同步的配置办法
发布时间:2022-03-02 14:59:27 所属栏目:MySql教程 来源:互联网
导读:准备工作 1.主从数据库版本最好一致 2.主从数据库内数据保持一致 主数据库:121.199.27.227 /ubuntu 16.04 MySQL 5.7.21 ( 阿里云 ) 从数据库:182.254.149.39 /ubuntu 16.04 MySQL 5.7.21 ( 腾讯云 ) 防火墙配置 配置主服务器只允许特定 IP 访问数据库的
准备工作 1.主从数据库版本最好一致 2.主从数据库内数据保持一致 主数据库:121.199.27.227 /ubuntu 16.04 MySQL 5.7.21 ( 阿里云 ) 从数据库:182.254.149.39 /ubuntu 16.04 MySQL 5.7.21 ( 腾讯云 ) 防火墙配置 配置主服务器只允许特定 IP 访问数据库的端口,避免不必要的攻击。 主库防火墙配置 # iptables -A INPUT -p tcp -s slave_ip --dport 3306 -j ACCEPT #删除可能已经存在的配置,避免出现多条重复记录 $ sudo iptables -D INPUT -p tcp -s 182.254.149.39 --dport 3306 -j ACCEPT $ sudo iptables -D INPUT -p tcp -s 127.0.0.1 --dport 3306 -j ACCEPT $ sudo iptables -D INPUT -p tcp --dport 3306 -j DROP $ sudo iptables -D INPUT -p udp --dport 3306 -j DROP $ sudo iptables -D INPUT -p sctp --dport 3306 -j DROP #增加配置,只允许特定地址访问数据库端口 $ sudo iptables -A INPUT -p tcp -s 182.254.149.39 --dport 3306 -j ACCEPT $ sudo iptables -A INPUT -p tcp -s 127.0.0.1 --dport 3306 -j ACCEPT $ sudo iptables -A INPUT -p tcp --dport 3306 -j DROP $ sudo iptables -A INPUT -p udp --dport 3306 -j DROP $ sudo iptables -A INPUT -p sctp --dport 3306 -j DROP $ sudo iptables -L -n 1.修改mysql配置 $ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 在[mysqld]部分进行如下修改: [mysqld] log-bin = /var/log/mysql/mysql-bin.log #开启二进制日志,默认是注释掉的,我们去掉注释 server-id = 1 #设置server-id bind-address = 0.0.0.0 #默认是127.0.0.1,此处我们设置为任意地址,放开远程访问,这么操作之前一定要确保防火墙配置正确,否则会产生安全风险 2.重启mysql,创建用于同步的用户账号 创建用户并授权:用户:repl 密码:slavepass $ sudo service mysql restart $ mysql -u root -p -e "CREATE USER 'repl'@'182.254.149.39' IDENTIFIED BY 'slavepass';" #创建用户 $ mysql -u root -p -e "GRANT REPLICATION SLAVE ON *.* TO 'repl'@'182.254.149.39';" #分配权限 $ mysql -u root -p -e "flush privileges;" #刷新权限 3.查看master状态,记录二进制文件名(mysql-bin.000001)和位置(333802): 4.主库备份,为从库的第一次数据同步准备数据 使用如下脚本产生数据库备份文件 #此处以备份wordpress数据库为例子 datadump=`which mysqldump` mysqluser="root" userpass="password" wordpressdb="wordpress" backupwordpress_sql=$wordpressdb.`date +%Y%m%d`.sql if $datadump -u $mysqluser --password=$userpass -h localhost --opt $wordpressdb > $backupwordpress_sql 2>&1 then echo " backup $wordpressdb success" else echo " backup $wordpressdb error" exit 1 fi #检验文件尾部是否存在 “-- Dump completed on”,如果存在不存在,则说明备份出错了。 if [ 0 -eq "$(sed '/^$/!h;$!d;g' $backupwordpress_sql | grep -c "Dump completed on")" ]; then echo " backup $wordpressdb error" exit 1 else echo " backup $wordpressdb success" fi 执行脚本,确保最后输出备份成功 $ cd ~ $ sudo bash backup_wordpress.sh (编辑:重庆站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |