我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL数据库主从同步实战过程详解

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL数据库主从同步实战过程详解

本文实例讲述了MySQL数据库主从同步实战过程。分享给大家供大家参考,具体如下:

接上一篇:MySQL数据库入门之备份数据库

安装环境说明

系统环境:


[root@~]# cat /etc/redhat-release 
CentOS release 6.5 (Final)
[root@~]# uname -r
2.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   = 3306
socket   = /data/3306/mysql.sock

[mysql]
no-auto-rehash

[mysqld]
user = mysql
port = 3306
socket = /data/3306/mysql.sock
basedir = /application/mysql
datadir = /data/3306/data
open_files_limit = 1024
back_log = 600

max_connections = 800
max_connect_errors = 3000
table_cache = 614
external-locking = FALSE
max_allowed_packet =8M
sort_buffer_size = 1M
join_buffer_size = 1M
thread_cache_size = 100
thread_concurrency = 2
query_cache_size = 2M
query_cache_limit = 1M
query_cache_min_res_unit = 2k
thread_stack = 192K
tmp_table_size = 2M
max_heap_table_size = 2M
long_query_time = 1

pid-file = /data/3306/mysql.pid
log-bin = /data/3306/mysql-bin
#主从同步的关键点,从库上不需要开启
relay-log = /data/3306/relay-bin
relay-log-info-file = /data/3306/relay-log.info
binlog_cache_size = 1M
max_binlog_cache_size = 1M
max_binlog_size = 2M
expire_logs_days = 7
key_buffer_size = 16M
read_buffer_size = 1M
read_rnd_buffer_size = 1M
bulk_insert_buffer_size = 1M
lower_case_table_names = 1
skip-name-resolve
slave-skip-errors = 1032,1062
replicate-ignore-db=mysql
server-id = 1 #主库从库ID 不可相同

[mysqldump]
quick
max_allowed_packet = 2M

[mysqld_safe]
log-error=/data/3306/mysql3306.err
pid-file=/data/3306/mysqld.pid

数据库启动脚本:


[root@~]#vi /data/3306/mysql
#!/bin/sh
port=3306
user="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 in
start)
 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.sock

mysql> 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相关内容感兴趣的读者可查看本站专题:《MySQL查询技巧大全》、《MySQL常用函数大汇总》、《MySQL日志操作技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》及《MySQL数据库锁相关技巧汇总》

希望本文所述对大家MySQL数据库计有所帮助。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL数据库主从同步实战过程详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL数据库主从同步实战过程详解

本文实例讲述了MySQL数据库主从同步实战过程。分享给大家供大家参考,具体如下: 接上一篇:MySQL数据库入门之备份数据库 安装环境说明 系统环境:[root@~]# cat /etc/redhat-release CentOS rel
2022-05-26

Mariadb数据库主从复制同步配置过程实例

目录一、环境规划二、mariadb的主从复制介绍1.主从复制简介2.半同步复制介绍3.主从复制原理图三、安装Mariadb1.配置yum仓库2.检查yum仓库3.安装mariadb4.启动mariadb服务5.从节点安装mariadb四、m
2022-11-24

Mariadb数据库主从复制同步配置过程实例

一、环境规划hostnameIP地址系统版本角色master192.168.3.171centos 7.6主节点node01192.168.3.172centos 7.6从节点node02192.168.3.173centos 7.6从节点二、Mariadb的主从复制介绍1.主从复制简介主从同步使得数据可以从一个数据库
Mariadb数据库主从复制同步配置过程实例
2024-04-02

MYSQL数据库怎么设置主从同步

本篇文章为大家展示了MYSQL数据库怎么设置主从同步,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、配置主数据库主master : 192.168.1.132从slave : 192.168.1.
2023-06-29

编程热搜

目录