MySQL数据库主从同步的实现方法
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,这篇文章主要讲解了MySQL数据库主从同步的实现方法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。安装环境说明系统环境:[root@~]# cat /etc/redhat
千家信息网最后更新 2025年01月21日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安全错误
数据库的锁怎样保障安全
六年级网络安全主题手抄报图片
网络安全事件 2017年
控制器软件开发与java
网络安全靠人民全文
数字化课程网络安全
个人信用基础数据库要采集贷款吗
做了登录界面怎么连接数据库
塔式服务器管理
上海城市队伍管理软件开发
软件开发能在哪里找工作
服务器安全测试怎么测
云服务器win10怎么下载
鹰潭主机服务器哪里好
建筑生存服务器招聘
联通免流量服务器
海南智信网络技术有限公司
我的世界nor叔服务器体验版
关机shutdown 数据库
网络安全与我国发展趋势
莆田警方网络安全二十七条
泰德软件开发公司
计时记分系统软件开发
利用sql文件恢复数据库
广西软件开发涉密信息系统集成
赞皇县委网络安全检查
金融可以学什么软件开发
阿里云云服务器控制面板
厦门服务器租用平台
湖南虚拟服务器云主机
网络安全与我国发展趋势