当前位置: 首页 > Linux

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

时间:2023-04-07 00:00:04 Linux

接上一篇文章:MySQL数据库备份介绍数据库安装环境说明系统环境:[root@~]#cat/etc/redhat-releaseCentOSrelease6.5(Final)[root@~]#uname-r2.6.32-431.el6.x86_64database:因为是模拟环境,主从库在同一台服务器上,服务器IP地址为192.168.1.7主库使用端口3306和从库使用3307端口数据库数据目录/data安装MySQL数据库服务下载软件包今天我们使用二进制安装包来部署MySQL数据库服务。其他安装部署方法可以参考之前的文章[root@~]#wgethttp://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@~]#tarzxfmysql-5.5.51-linux2.6-x86_64.tar.gz[root@~]#mvmysql-5.5.51-linux2.6-x86_64/application/mysql-5.5.51[root@~]#ln-s/application/mysql-5.5.51/application/mysql创建用户[root@~]#groupaddmysql[root@~]#useradd-gmysql-Mmysql初始化数据库[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_pa??cket=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_pa??cket=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(){如果[!-e"$sock"];thenprintf"StartingMySQL...\n"/bin/sh${Path}/mysqld_safe--defaults-file=/data/${port}/my.cnf2>&1>/dev/null&elseprintf"MySQLisrunning...\n"exitfi}stop_mysql(){if[!-e"$sock"];thenprintf"MySQLisstopped...\n"exitelseprintf"StopingMySQL...\n"${Path}/mysqladmin-u${user}-p${pwd}-S/data/${port}/mysql.sockshutdownfi}restart_mysql(){printf"RestartingMySQL...\n"stop_mysqlsleep2start_mysql}case$1instart)start_mysql;;stop)stop_mysql;;restart)restart_mysql;;*)printf"Usage:/data/${port}/mysql{start|stop|restart}\n"esac注:主从数据库配置文件同启动文件,只需要修改端口和server-id即可完成配置授权目录,增加启动文件的可执行权限[root@~]#chown-Rmysql.mysql/data[root@~]#find/data-namemysql-exexchmod+x{}\;启动数据库[root@~]#/data/3306/mysqlstart[root@~]#/data/3307/mysqlstart修改默认数据库密码[root@~]#mysqladmin-urootpassword'123456'-s/data/3306/mysql.sock[root@~]#mysqladmin-urootpassword'123456'-S/data/3307/mysql.sock测试登录,可以登录两个数据库完成整个安装过程配置主库1)备份主库mkdir/backup登录主库创建用户同步用户并授权[root@~]#mysql-uroot-p123456-S/data/3306/mysql.sockmysql>grantreplicationslaveon*.*torep@'192.168.1.%'identifiedby'123456';QueryOK,0rowsaffected(0.00sec)mysql>flushprivileges;QueryOK,0rowsaffected(0.00sec)执行锁表操作[root@~]#/application/mysql/bin/mysql-uroot-p123456-S/data/3306/mysql.sock-e"flushtablewithreadlock;"备份主库[root@~]#/application/mysql/bin/mysql-uroot-p123456-S/data/3306/mysql.sock-e"显示主人状态;">/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"unlocktables;"备注:以上操作也可以通过登录主数据库进行,但需要注意的是,执行锁表操作后,需要另外打开一个窗口进行数据备份,不能直接退出。最好防止因数据写入导致备份数据不完整使用非交互操作。配置从库实现主从同步解压主库备份文件,恢复数据库[root@backup]#gzip-dmysql.sql.gz[root@backup]#/application/mysql/bin/mysql-uroot-p123456-s/data/3307/mysql.sockCHANGEMASTERTO->MASTER_HOST='192.168.1.7',#serverIP->MASTER_PORT=3306,#主库端口->MASTER_USER='rep',#同步用户->MASTER_PASSWORD='123456',#同步用户密码->MASTER_LOG_FILE='mysql-bin.000002',#binlog文件->MASTER_LOG_POS=424;#位置点mysql>启动slave;#开启同步等待60S查看同步状态[root@backup]#mysql-S/data/3307/mysql.sock-e"showslavestatus\G"|egrep"Seconds_Behind_Master|_Running"Slave_IO_Running:YesSlave_SQL_Running:YesSeconds_Behind_Master:0只要出现以上情况,就说明主从同步成功。测试主从同步主库创建数据库[root@backup~]#mysql-S/data/3306/mysql.sock-e"createdatabasetongbuku"[root@backup~]#mysql-S/data/3306/mysql.sock-e"显示数据库"+------------------------------+|数据库|+--------------------------+|信息模式||数据库||性能模式||测试||tongbuku|+------------------------------+从数据库查看同步情况[root@backup~]#mysql-S/data/3307/mysql.sock-e"显示数据库"+--------------------------+|数据库|+----------------------------+|信息架构||数据库||性能模式||测试||通布库|+----------------------------+表示主从同步状态正常。也可以在主库的新建数据表中新建一个表,然后插入新的数据来测试主从同步状态。如果需要关注更多其他技术方向的文章,也可以关注民工哥的个人微信公众号:民工哥的技术之路,关注民工哥的技术之路微信上公众号对话框回复关键词:1024即可获取最新整理的技术干货:包含系统运维、数据库、redis、MogoDB、电子书、Java基础课程、Java实战项目、架构师综合教程、架构师实战项目、大数据、Docker容器、ELKStack、机器学习、BAT面试精讲视频等。

猜你喜欢