MySQL数据库主从同步的实现方法
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇文章主要讲解了MySQL数据库主从同步的实现方法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。安装环境说明系统环境:[root@~]# cat /etc/redhat
千家信息网最后更新 2025年02月23日MySQL数据库主从同步的实现方法
这篇文章主要讲解了MySQL数据库主从同步的实现方法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
安装环境说明
系统环境:
[root@~]# cat /etc/redhat-release CentOS release 6.5 (Final)[root@~]# uname -r2.6.32-431.el6.x86_64
数据库:
由于是模拟环境,主从库在同一台服务器上,服务器IP地址192.168.1.7
- 主库使用3306端口
- 从库使用3307端口
- 数据库数据目录/data
安装MySQL数据库服务
下载软件包
今天我们是用二进制安装包进行布署MySQL数据库服务,其它方式的安装布署方法请参考前面的文章
[root@~]#wget http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.51-linux2.6-x86_64.tar.gz
创建数据目录、软件安装目录
[root@~]#mkdir /data{3306,3307} -p[root@~]#mkdri /application
解压软件
[root@~]#tar zxf mysql-5.5.51-linux2.6-x86_64.tar.gz [root@~]#mv mysql-5.5.51-linux2.6-x86_64 /application/mysql-5.5.51[root@~]#ln -s /application/mysql-5.5.51 /application/mysql
创建用户
[root@~]#groupadd mysql[root@~]#useradd -g mysql -M mysql
初始化数据库
[root@~]#/application/mysql/scripts/mysql_install_db --basedir=/application/mysql --datadir=/data/3306/data --user=mysql[root@~]#/application/mysql/scripts/mysql_install_db --basedir=/application/mysql --datadir=/data/3307/data --user=mysql
创建配置文件
[root@~]#vi /data/3306/my.cnf[client]port = 3306socket = /data/3306/mysql.sock[mysql]no-auto-rehash[mysqld]user = mysqlport = 3306socket = /data/3306/mysql.sockbasedir = /application/mysqldatadir = /data/3306/dataopen_files_limit = 1024back_log = 600max_connections = 800max_connect_errors = 3000table_cache = 614external-locking = FALSEmax_allowed_packet =8Msort_buffer_size = 1Mjoin_buffer_size = 1Mthread_cache_size = 100thread_concurrency = 2query_cache_size = 2Mquery_cache_limit = 1Mquery_cache_min_res_unit = 2kthread_stack = 192Ktmp_table_size = 2Mmax_heap_table_size = 2Mlong_query_time = 1pid-file = /data/3306/mysql.pidlog-bin = /data/3306/mysql-bin#主从同步的关键点,从库上不需要开启relay-log = /data/3306/relay-binrelay-log-info-file = /data/3306/relay-log.infobinlog_cache_size = 1Mmax_binlog_cache_size = 1Mmax_binlog_size = 2Mexpire_logs_days = 7key_buffer_size = 16Mread_buffer_size = 1Mread_rnd_buffer_size = 1Mbulk_insert_buffer_size = 1Mlower_case_table_names = 1skip-name-resolveslave-skip-errors = 1032,1062replicate-ignore-db=mysqlserver-id = 1 #主库从库ID 不可相同[mysqldump]quickmax_allowed_packet = 2M[mysqld_safe]log-error=/data/3306/mysql3306.errpid-file=/data/3306/mysqld.pid
数据库启动脚本:
[root@~]#vi /data/3306/mysql#!/bin/shport=3306user="root"pwd="123456"Path="/application/mysql/bin"sock="/data/${port}/mysql.sock"start_mysql(){ if [ ! -e "$sock" ];then printf "Starting MySQL...\n" /bin/sh ${Path}/mysqld_safe --defaults-file=/data/${port}/my.cnf 2>&1 > /dev/null & else printf "MySQL is running...\n" exit fi}stop_mysql(){ if [ ! -e "$sock" ];then printf "MySQL is stopped...\n" exit else printf "Stoping MySQL...\n" ${Path}/mysqladmin -u ${user} -p${pwd} -S /data/${port}/mysql.sock shutdown fi}restart_mysql(){ printf "Restarting MySQL...\n" stop_mysql sleep 2 start_mysql}case $1 instart) start_mysql;;stop) stop_mysql;;restart) restart_mysql;;*) printf "Usage: /data/${port}/mysql {start|stop|restart}\n"esac
备注:主从库配置文件与启动文件一样,只需修改端口与server-id即可完成配置
授权目录并增加启动文件可执行权限
[root@~]#chown -R mysql.mysql /data[root@~]#find /data -name mysql -exex chmod +x {} \;
启动数据库
[root@~]#/data/3306/mysql start[root@~]#/data/3307/mysql start
修改默认数据库密码
[root@~]#mysqladmin -uroot password '123456' -S /data/3306/mysql.sock[root@~]#mysqladmin -uroot password '123456' -S /data/3307/mysql.sock
测试登陆,可以登陆两个数据库即可完成全部安装过程
配置主库
1)备份主库
mkdir /backup
登陆主库创建用步同户并授权
[root@~]#mysql -uroot -p123456 -S /data/3306/mysql.sockmysql> grant replication slave on *.* to rep@'192.168.1.%' identified by'123456';Query OK, 0 rows affected (0.00 sec)mysql> flush privileges;Query OK, 0 rows affected (0.00 sec)
执行锁表操作
[root@~]#/application/mysql/bin/mysql -uroot -p123456 -S /data/3306/mysql.sock -e "flush table with read lock;"
备份主库
[root@~]#/application/mysql/bin/mysql -uroot -p123456 -S /data/3306/mysql.sock -e "show master status;" >/backup/mysql.log[root@~]#/application/mysql/bin/mysqldump -uroot -p123456 -S /data/3306/mysql.sock -A -B |gzip >/backup/mysql.sql.gz
解除锁表状态
[root@~]#/application/mysql/bin/mysql -uroot -p123456 -S /data/3306/mysql.sock -e "unlock tables;"
备注:以上操作也可以登陆主库进行,但是需要注意的是,执行锁表操作后,需要另开启一个窗口进行数据备份,不可直接退出,防止有数据写入导致备份的数据不完整。最好是使用非交互式操作。
配置从库实现主从同步
将主库的备份文件解压并恢复数据库
[root@backup ]#gzip -d mysql.sql.gz[root@backup ]#/application/mysql/bin/mysql -uroot -p123456 -S /data/3307/mysql.sock < mysql.sql
查看LOG日志
[root@backup ]#cat mysql.log+------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+------------------+| mysql-bin.000002 | 424 | | |+------------------+----------+--------------+------------------+
登陆从库执行下面的操作
mysql> CHANGE MASTER TO -> MASTER_HOST='192.168.1.7', #服务器IP -> MASTER_PORT=3306, #主库端口 -> MASTER_USER='rep', #同步的用户 -> MASTER_PASSWORD='123456', #同步的用户密码 -> MASTER_LOG_FILE=' mysql-bin.000002', #binlog文件 -> MASTER_LOG_POS=424; #位置点mysql> start slave; #开启同步
等待60S后查看同步状态
[root@backup ]# mysql -S /data/3307/mysql.sock -e "show slave status\G"|egrep "Seconds_Behind_Master|_Running" Slave_IO_Running: Yes Slave_SQL_Running: Yes Seconds_Behind_Master: 0
只要出现上述情况说明主从同步成功
测试主从同步
主库创建一个数据库
[root@backup ~]# mysql -S /data/3306/mysql.sock -e "create database tongbuku"[root@backup ~]# mysql -S /data/3306/mysql.sock -e "show databases"+-----------------------------+| Database |+-----------------------------+| information_schema || mysql || performance_schema || test || tongbuku |+-----------------------------+
查看从库同步情况
[root@backup ~]# mysql -S /data/3307/mysql.sock -e "show databases"+-----------------------------+| Database |+-----------------------------+| information_schema || mysql || performance_schema || test || tongbuku |+-----------------------------+
表明主从同步状态正常,也可以在主库新的数据表中创建表,再插入新的数据来测试主从同步状态
看完上述内容,是不是对MySQL数据库主从同步的实现方法有进一步的了解,如果还想学习更多内容,欢迎关注行业资讯频道。
数据
数据库
同步
主从
文件
备份
服务
登陆
配置
状态
目录
端口
方法
内容
服务器
环境
用户
软件
测试
备注
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
重庆学习软件开发怎样收费
如何备份数据库表中的指定字段
英国大学生网络安全排名
搭建分布式算力服务器
杭州未来科技城互联网有哪些
静态路由网络技术
数据库操作会有记录吗
操作系统崩溃了数据库如何恢复
边缘服务器
数据库课程介绍 英文
战德臣数据库系统基本概念
中国电信网络技术工程师考试
饥荒联机版专用服务器安全组
ios软件开发工程师月薪
最流行的软件开发框架
游戏服务器怎么搭建
便宜软件开发优化建站
华硕服务器管理端口
网络安全攻击主要分为哪五种
主题网络安全的手抄报
虚拟服务器和虚拟客户端
网络安全现有知识
新网的云服务器怎么样
vb web数据库开发
供应优惠的聊天软件开发
网络安全 公民能做什么
软件开发外包纠纷案例
网络技术有哪些书
我的世界服务器解封怎么进不去
steam 失落的方舟服务器