当前位置: 首页 > news >正文

MySQL主从介绍 准备工作 配置主 配置从 测试主从同步

一、MySQL主从介绍
MySQL主从介绍 准备工作 配置主  配置从 测试主从同步
MySQL主从介绍 准备工作 配置主  配置从 测试主从同步
mysql主从应用场景:
1、数据备份,如果主库机器出现宕机,可以切换到从库机器为web提供服务
2、也是数据备份,但是从库机器可以为web服务提供读数据的功能,但是不能写数据,来减轻主库机器的压力
二、准备工作
准备两台机器,一个作为主库服务器,一个作为从库服务器
首先要在两台机器上分别安装mysql,具体安装步骤可参考之前笔记链接:https://blog.51cto.com/13669226/2119680
大致安装步骤可分为:
1、下载.tar.gz包
wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
2、解压tar.gz包
tar zxvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
3、挪动目录并改名
mv mysql-5.6.36-linux-glibc2.5-x86_64 /usr/local/mysql
4、初始化,需要事先添加mysql用户和创建data目录
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
初始化之后要检查下初始化是否成功,初始化成功的标志是两个OK或者执行完命令输入#echo $?
5、修改配置文件
vi /etc/my.cnf
定义datadir和socket路径
6、拷贝启动脚本到/etc/init.d/目录下并重命名为mysqld
cp support-files/mysql.server /etc/init.d/mysqld
7、编辑/etc/init.d/mysqld文件,定义basedir和datadir路径
vim /etc/init.d/mysqld
8、启动mysql
/etc/init.d/mysqld start
Starting MySQL.. ERROR! The server quit without updating PID file (/data/mysql/linux-01.pid). //启动报错
排查问题思路:
查看错误日志
#tail /data/mysql/linux-01.err
06-28 21:34:28 2726 [Note] Shutting down plugin 'CSV'
06-28 21:34:28 2726 [Note] Shutting down plugin 'MRG_MYISAM'
06-28 21:34:28 2726 [Note] Shutting down plugin 'MEMORY'
06-28 21:34:28 2726 [Note] Shutting down plugin 'MyISAM'
06-28 21:34:28 2726 [Note] Shutting down plugin 'sha256_password'
06-28 21:34:28 2726 [Note] Shutting down plugin 'mysql_old_password'
06-28 21:34:28 2726 [Note] Shutting down plugin 'mysql_native_password'
06-28 21:34:28 2726 [Note] Shutting down plugin 'binlog'
06-28 21:34:28 2726 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete
#less /data/mysql/linux-01.err
看到错误信息有如下提示:
Can't find file: './mysql/plugin.frm' (errno: 13 - Permission denied)
#ls -l /data/mysql/ //查看到/data/mysql/文件的属主属组属于root
解决方法:修改/data/mysql/文件的属主属组为mysql:mysql
#chown -R mysql:mysql /data/mysql/
#/etc/init.d/mysqld start //再次启动就启动成功了
Starting MySQL......... SUCCESS!
#chkconfig mysqld on //设置开机启动mysqld服务
把两台机器的mysql服务都启来
接下来需要配置主从的配置文件
三、配置主
MySQL主从介绍 准备工作 配置主  配置从 测试主从同步
#vim /etc/my.cnf //修改my.cnf,增加如下内容
MySQL主从介绍 准备工作 配置主  配置从 测试主从同步
#/etc/init.d/mysqld restart //重启mysql
#cd /data/mysql/
#ls -lt
MySQL主从介绍 准备工作 配置主  配置从 测试主从同步
aminglinux1.index 是前缀文件,是它的索引,aminglinux1.000001 是二进制日志文件,这两个文件是实现主从的根本
#mysqldump -uroot -p123456 zrlog > /tmp/zrlog.sql //备份zrlog数据库
#mysql -uroot -p123456 -e "create database aming" //创建一个新库,aming库
#mysql -uroot -p123456 aming < /tmp/zrlog.sql //把备份的zrlog数据库恢复到aming库
#ls -lt //参考的主从就是aming这个库了,log_bin里面完整的记录了数据库的过程,log_bin在my.cnf中定义的就是aminglinux1,所以log_bin就是aminglinux1.000001
#mysql -uroot -p123456
mysql> grant replication slave on . to 'repl'@'192.168.238.130' identified by '123456';
/创建主从同步数据的用户,只需要replication slave 权限,.表示所有的库所有的表,对repl用户,针对从库的IP地址
mysql> flush tables with read lock; //锁下表,目的是不让它再写了,数据先暂停,状态先保持在这里,这样从库同步数据的时候,两者保持一致,这样才能实现同步
mysql> show master status; //需要记住如下红框中的File和Position
MySQL主从介绍 准备工作 配置主  配置从 测试主从同步
mysql> quit
#ls -l //备份如下几个数据库,
MySQL主从介绍 准备工作 配置主  配置从 测试主从同步
#mysqldump -uroot -p123456 log > /tmp/log.sql //备份log库
#mysqldump -uroot -p123456 logs > /tmp/logs.sql //备份logs库
#mysqldump -uroot -p123456 test > /tmp/test.sql //备份test库
#ls /tmp/sql //查看/tmp/目录下的.sql文件
/tmp/log.sql /tmp/logs.sql /tmp/test.sql /tmp/zrlog.sql
四、配置从
MySQL主从介绍 准备工作 配置主  配置从 测试主从同步
#ps aux |grep mysql //查看mysql服务有没有起来
#vim /etc/my.cnf //配置从库服务器,添加server-id=130,从库服务器IP:192.168.238.130,从库配置文件不需要配置log_bin=""这个参数,只有主库服务器才需要二进制日志文件
MySQL主从介绍 准备工作 配置主  配置从 测试主从同步
#/etc/init.d/mysqld restart //重启mysql
#scp 192.168.238.128:/tmp/
.sql /tmp/ //复制主库/tmp/*.sql下所有的.sql文件到本机的/tmp/目录下
log.sql 100% 1257 304.8KB/s 00:00
logs.sql 100% 1258 458.8KB/s 00:00
test.sql 100% 1258 353.4KB/s 00:00
zrlog.sql 100% 10KB 353.0KB/s 00:00
#mysql -uroot //提示命令未找到
bash: mysql: command not found
#alias 'mysql=/usr/local/mysql/bin/mysql' //做别名
#alias 'mysqldump=/usr/local/mysql/bin/mysqldump'
#mysql -uroot //做完别名就可以使用这个命令了
mysql> create database aming; //创建几个库
mysql> create database log;
mysql> create database logs;
mysql> create database zrlog;
mysql> quit
#mysql -uroot log < /tmp/log.sql //恢复log数据库
#mysql -uroot logs < /tmp/logs.sql //恢复logs数据库
#mysql -uroot zrlog < /tmp/zrlog.sql //恢复zrlog数据库
#mysql -uroot aming < /tmp/zrlog.sql //把备份的zrlog数据库恢复到aming库,保持两边数据一致
#ls /data/mysql/ //查看mysql目录下数据库是否和主库的mysql目录下数据库一致
#mysql -uroot
mysql> stop slave;
mysql> change master to master_host='192.168.238.128', master_user='repl', master_password='123456', master_log_file='aminglinux1.000002', master_log_pos=10922;
//解释:这一行命令是配置主从同步的核心,master_host='192.168.238.128'这个IP是主库服务器IP;也可以指定port=3306,默认是3306可以省略;master_user='repl'用户是repl;master_password='123456'密码是123456;
master_log_file='aminglinux1.000002',这里的master_log_file填写的就是在主库里面mysql> show master status;出来的方框里面的File;master_log_pos=10922这里的这个数值也是在主库里面mysql> show master status;出来的方框里面的Position方框里面的数值。
mysql> start slave;
mysql> show slave status\G //查看主从有没有配置成功,主要看有没有下图的两个Yes
MySQL主从介绍 准备工作 配置主  配置从 测试主从同步
以上是从库配置完成没有问题
需要在主库上开启写的权限,具体操作如下:
[root@linux-01 ~]# mysql -uroot -p123456
mysql> unlock tables; //开启主库写的权限
MySQL主从介绍 准备工作 配置主  配置从 测试主从同步
五、测试主从同步
MySQL主从介绍 准备工作 配置主  配置从 测试主从同步
MySQL主从介绍 准备工作 配置主  配置从 测试主从同步
以后做忽略某个库的时候使用replicate_wild_do_table= 和 replicate_wild_ignore_table= 这两个配置参数,尽量不要使用replicate_do_da= 、replicate_ignore_db= 、 replicate_do_table= 、 replicate_ignore_table= 这四个配置参数
主库上操作:
[root@linux-01 ~]# mysql -uroot -p123456
mysql> use aming;
mysql> show tables;
MySQL主从介绍 准备工作 配置主  配置从 测试主从同步
mysql> select count() user;
MySQL主从介绍 准备工作 配置主  配置从 测试主从同步
mysql> drop database aming; //删除aming库,可以在从库上验证有没有删除aming库
查看从库里面的:
[root@linux-02 ~]# mysql -uroot
mysql> use aming;
mysql> select count(
) user;
MySQL主从介绍 准备工作 配置主  配置从 测试主从同步
mysql > show databases; //可以看到aming库已经删除
问题:如果遇到在从库上误删除库或者表,mysql> show slave status\G 查看状态应该是有一个NO
解决方法:
首先保持主从两边是数据库是一直的,在主库上查看mysql> show master status;两个数值,在从库
mysql> stop slave;
mysql> change master to master_host='192.168.238.128', master_user='repl', master_password='123456', master_log_file='aminglinux1.000002', master_log_pos=10922;
mysql> start slave;
mysql> show slave status\G //再次查看状态就是两个Yes了

转载于:https://blog.51cto.com/13669226/2133991

相关文章:

  • 定位多线程内存越界问题实践总结【转】
  • Git远程操作
  • Kafka server.properties配置说明
  • MYSQL的批量插入或更新方法优化
  • Redis 如何分布式,来看京东金融的设计与实践
  • 华为云,有技术,有未来
  • 查看数据库账号
  • 不小心删数据库是一种怎样的体验?
  • 正面反击 Google、FB 等巨头,万维网之父携 Solid 归来
  • cacti 的 “FATAL: Cannot connect to MySQL server on
  • 人机大战引关注 人工智能概念股有望受追捧
  • 0705作业
  • Js模块化之-import和export
  • DevC++连接MySQL可用详细教程
  • LNMP架构 (Ⅱ)——nginx相关配置、nginx代理
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • angular2 简述
  • AWS实战 - 利用IAM对S3做访问控制
  • chrome扩展demo1-小时钟
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • Hibernate最全面试题
  • javascript数组去重/查找/插入/删除
  • JavaScript异步流程控制的前世今生
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • miaov-React 最佳入门
  • ReactNativeweexDeviceOne对比
  • spring boot下thymeleaf全局静态变量配置
  • Vim 折腾记
  • 对象引论
  • 仿天猫超市收藏抛物线动画工具库
  • 分布式任务队列Celery
  • 力扣(LeetCode)56
  • 利用DataURL技术在网页上显示图片
  • 微信支付JSAPI,实测!终极方案
  • 系统认识JavaScript正则表达式
  • 写代码的正确姿势
  • 学习JavaScript数据结构与算法 — 树
  • 7行Python代码的人脸识别
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • #QT项目实战(天气预报)
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (02)Hive SQL编译成MapReduce任务的过程
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (Oracle)SQL优化技巧(一):分页查询
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (四)图像的%2线性拉伸
  • (一)基于IDEA的JAVA基础1
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转)负载均衡,回话保持,cookie
  • (转)树状数组
  • .cn根服务器被攻击之后