linux中mysql多主一从热备份

前面的文章中http://5148737.blog.51cto.com/5138737/1570274 讲了如何进行linux中的mysql热备份,属于一主一从的情况,但是大部分情况都是多台主机备份到一台从机,节省设备嘛。

找了好久,才找到解决方法,写下来,因为真的忘的很快。

主机的配置都是一样的,修改配置文件,加入server-id 等的配置,重启,创建slave用户并授权,查看master状态,到此主机结束。

接下来就是从机了,也主要是从机了。

因为我们需要对数据库进行change master操作,如果只有一个数据库实例的话,那前者的change master设置的参数,将被后者覆盖,所以,问题来了,如何创建多个数据库实例。

为从机创建多个数据库实例

  1. 修改从机配置文件

    采用的是mysqld_multi的方法,主要修改配置文件/etc/my.cnf,具体的mysqld_multi的用法自己度娘吧,我这里直接贴出我的配置了。

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
[mysqld_multi]
mysqld     = /usr/bin/mysqld_safe
user       = root
password   = chinacache.gz
log = /var/lib/mysql/multi.log    <!--错误日志打印处 -->

[mysqld3305]     <!--模块名,mysqldXX  xx处只能为数字 -- >
port            = 3305       <!--指定端口 -->
log-error=/var/lib/mysql3305/mysqld-error.log   <!--指定错误日志 -->
pid-file=/var/lib/mysql3305/mysqld.pid          <!--指定pid -->
datadir=/var/lib/mysql3305                       <!--指定basedir -->
socket=/var/lib/mysql3305/mysql.sock            <!--指定basedir -->
server-id       = 195                           <!--指定server-id-->
log-bin=/var/lib/mysql3305/mysqld-relay-bin
replicate-do-db=cdnquality                      <!--指定主机中需要备份的数据库 -->
user       = mysql

[mysqld3306]                            <!--多个数据库实例,来多个模块 -->
port            = 3306
log-error=/var/lib/mysql3306/mysqld-error.log
pid-file=/var/lib/mysql3306/mysqld.pid
datadir=/var/lib/mysql3306
socket=/var/lib/mysql3306/mysql.sock
server-id       = 196
log-bin=/var/lib/mysql3306/mysqld-relay-bin
replicate-do-db=vbumng
user       = mysql

2.创建多个数据库实例

mysql_install_db  --datadir=/var/lib/mysql3305 --user=mysql
mysql_install_db  --datadir=/var/lib/mysql3306 --user=mysql

给数据库授予 mysql 用户的权限

chown -R  mysql  /var/lib/mysql3305
chown -R  mysql  /var/lib/mysql3306

3.启动多个数据库实例

这里启动不是采用常规的 /etc/init.d/mysqld start 启动,需要采用mysqld_multi的方式启动

mysqld_multi --defaults-file=/etc/my.cnf start 3306   //这里的3306对应my.cnf中的模块名
mysqld_multi --defaults-file=/etc/my.cnf start 3305

//可以查看启动状态  
netstat -ntlp|grep mysql

ps:如果这里可以看到每个启动的数据库实例的话,那基本就大功告成了。

4.分别进入每个数据库实例,进行change master操作

进入不同的数据库的时候,要指定port或者sock

mysql -uroot -p -P 3305  -S /var/lib/mysql3305/mysql.sock
从主机复制需要备份的数据库
对数据库进行change master 配置
启动slave  start slave
查看slave状态     show slave status\G

mysql -uroot -p -P 3306  -S /var/lib/mysql3306/mysql.sock
从主机复制需要备份的数据库
对数据库进行change master 配置
启动slave  start slave
查看slave状态     show slave status\G

ps:进入不同数据库实例后,操作的步骤就一样的,可以参考前面的一主一从的情况

时间: 2024-10-06 22:21:15

linux中mysql多主一从热备份的相关文章

Linux中mysql进入命令行报错:MYSQL ERROR 2003 (HY000): Can&#39;t connect to MySQL server on &#39;192.168.99.192&#39; (111)

场景:在Linux中安装mysql01和mysql02,通过VIP虚出一个VIP=192.168.99.192,mysql01为主ip为192.168.99.153,mysql02为备机ip为192.168.99.154 此时VIP在mysql01上通过 mysql01上连接VIP :mysql -h 192.168.99.192 -P 3306   结果是可以正常进入mysql命令行: 通过mysql02上远程连接VIP 会在界面上报错:mysql error 2003(HY000):Can'

linux中MySQL下添加用户以及给予权限的实现

1.在linux中首先登入mysql:mysql -u root -p(提示输入密码,输入即可)  2.选择mysql数据库:use mysql.    在mysql表中插入系统的用户名和用户密码: insert into user(Host,User,Password) values("localhost","你的用户名",password("你要设置的密码")); 3.刷新mysql系统相关的表:flush privileges; 4.给新增

Linux中Mysql安装与使用(CentOS-6.5:mysql-5.5.27)

1 Mysql简介 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司.Mysql是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一.MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性.MySQL所使用的SQL语言是用于访问数据库的最常

Linux中mysql的root密码重置

方法:在linux中安装好mysql之后默认是没有密码的,但为了安全,我们有必要去设置密码,有时候可能你设置密码后忘记了,那怎么办?那就得去通过修改一个配置文件,它路径在/etc/my.cnf中,然后取消授权,那样就不需要输入密码进入mysql,进去mysql重置密码,修改之后要记得去删除在/etc/my.cnf取消授权的语句. 说明:下边的mysql指令我已经设置了它的环境变量,如果没有设置那么就得用它的绝对路径去执行这个指令. (1)设置密码 #mysqladmin  -uroot  pas

Linux中 MySQL 授权远程连接

说明:当别的机子(IP )通过客户端的方式在没有授权的情况下是无法连接 MySQL 数据库的,如果需要远程连接 Linux 系统上的 MySQL 时,必须为其 IP 和具体用户进行授权.一般 root 用户不会提供给开发者.如:使用 Windows 上的 SQLyog 图形化管理工具连接 Linux 上的 MySQL 数据库,必须先对其进行授权. 1.在虚拟机中使用 root 用户登录 mysql 数据库 mysql -u root -p 说明:root 用户密码一般设置为 root 2.使用

Linux中Mysql root用户看不到mysql库问题解决方式

第一种方式: 1.首先停止MySQL服务:service mysqld stop2.加参数启动mysql:/usr/bin/mysqld_safe --skip-grant-tables & 然后就可以无任何限制的访问mysql了3.root用户登陆系统:mysql -u root -p mysql4.切换数据库:use mysql5.显示所有的表:show tables;这里就可以访问表了6.查看user表中root用户的localhost权限:select * from user where

Linux中mysql中文乱码

问题描述:当我们在linux系统上装载mysql后操作数据库的时候,会出现中文乱码问题,比如做插入操作,发现添加到数据库的数据中文出现论码,下面就将解决linux下mysql中文乱码问题!: 环境centos6.5 1.打开Linux窗口,启动mysql: mysql -uroot -proot 2.连接mysql后输入: show variables like '%char%'; 3.配置/etc/my.cnf如下(如果/etc/my.cnf不存在,可以新建/etc/my.cnf文件): [c

linux中mysql主从热备份

近期需要对主服务器上的mysql进行热备份,也就是数据实时同步. 参考的文章如下 :http://369369.blog.51cto.com/319630/790921/ 我的环境如下:主机A ip:42.62.25.47   从机B  ip:106.3.37.197 需要热备份的数据为vbumng 1.前提要求:主机A 的mysql版本 不得高于 从机B的mysql版本 2.修改主机A的配置文件 我的配置文件目录为  /etc/my.cnf 在[mysqld] 模块中加入下面配置 [mysql

Linux中MySQL忽略表中字段大小写

linux 下,mysql 的表面默认是区分大小写的,windows 下默认不区分大小写,我们大多数在windows 下开发,之后迁移到linux(特别是带有Hibernate的工程),可以修改配置是linux下,myql 表名不区分大小写 MySQL在Linux下数据库名.表名.列名.别名大小写规则是这样的:     1.数据库名与表名是严格区分大小写的:     2.表的别名是严格区分大小写的:     3.列名与列的别名在所有的情况下均是忽略大小写的:     4.变量名也是严格区分大小写