文档章节

mysql主从配置热备份

cIouddyy
 cIouddyy
发布于 2016/08/20 01:50
字数 1122
阅读 124
收藏 2

【环境介绍】
    两台linux服务器(如果是一台,要保证两个mysql都能正常启动),这里以centos6.8版本为例
    mysql,使用centos6.8默认的源中的数据库(通过yum install mysql mysql-server -y安装,5.1.73版本)
    保证两台服务器能相互通信
【安装步骤】
    1、安装mysql数据库
        yum install mysql mysql-server -y
    2、设置开机启动
        chkconfig --levels 2345 mysqld on
    3、启动mysql数据库
        service mysqld start
    4、设置用户名和密码
        mysql_secure_installation
【主机配置】
    1、登录数据库
        进入mysql控制台
            mysql -uroot -p
        创建数据库
            mysql> create database testdb;
        授权用户mysqlcopy只能从机这个IP访问主服务器上面的数据库,并且只具有数据库备份的权限
            mysql> grant replication slave  on *.* to 'mysqlcopy'@'10.241.226.111' identified by 'admin' with grant option;
    2、导出主机的数据库内容
        在导出之前可以先进入MySQL控制台执行下面命令
            数据库只读锁定命令,防止导出数据库的时候有数据写入
            mysql> flush tables with read lock;
        执行导出命令
            mysql> mysqldump -u root -p testdb> /home/testdbbak.sql;
        解除锁定
            mysql> unlock tables;
    3、配置mysql主服务器的my.cnf文件
        编辑配置文件,在[mysqld]部分添加下面内容(和[mysqld]挨着)
            vi /etc/my.cnf
            # 启动MySQ二进制日志系统,注意:如果原来的配置文件中已经有这一行,就不用再添加了。
            log_bin=mysql-bin
            # 需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
            binlog-do-db=testdb
            # 不同步mysql系统数据库  
            binlog-ignore-db=mysql
            # 设置服务器id,为1表示主服务器,注意:如果原来的配置文件中已经有这一行,就不用再添加了。
            server_id = 1
            # 如果这一行已经存在,就不用添加这一行了
            socket =/var/lib/mysql/mysql.sock
            # 设置编码
            character-set-server=utf8 
        重启MySQL
            service mysqld restart
        进入mysql控制台
            mysql -uroot -p
        查看主服务器,出现以下类似信息
            mysql> show master status;
            +------------------+----------+--------------+------------------+
            | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
            +------------------+----------+--------------+------------------+
            | mysql-bin.000001 |      106 | testdb       | mysql            |
            +------------------+----------+--------------+------------------+
        【注意】需要记录file的值:mysql-bin.000001和position的值:106,后面会用到
【从机配置】
    1、登录数据库
        进入mysql控制台
            mysql -uroot -p
        创建数据库
            mysql> create database testdb;
        进入数据库
            mysql> user testdb;
        导入备份文件到数据库(如果是在两台不同的机器上,需要从主机把文件拷贝到从机上)
            mysql> source  /home/testdbbak.sql;
        测试在从服务器上登录到主服务器
            mysql -u mysqlcopy-h10.241.226.110 -p
    2、配置mysql从服务器的my.cnf文件
        编辑配置文件,在[mysqld]部分添加下面内容(和[mysqld]挨着)
            vi /etc/my.cnf
            # 启动MySQ二进制日志系统,注意:如果原来的配置文件中已经有这一行,就不用再添加了。
            log_bin=mysql-bin
            replicate-do-db=testdb
            replicate-ignore-db=mysql
            read_only=1
            # 配置文件中已经有一行server-id=1,修改其值为2,表示为从数据库
            server_id = 2
            # 如果这一行已经存在了,就不需要这一行了
            socket = /var/lib/mysql/mysql.sock
            # 设置编码
            character-set-server=utf8
        重启mysql
            service mysqld restart
        进入MySQL控制台
            mysql -uroot -p
        停止slave同步进程
            slave stop;
        执行同步语句
            change master to master_host='192.168.1.155',master_user='mysqlcopy',master_password='admin',master_log_file='mysql-bin.000001',master_log_pos=106;
        开启slave同步进程
            slave start;
        查看slave同步信息,部分内容如下:
            SHOW SLAVE STATUS\G
            +----------------------------------+---------------+-------------+-------------+---------------+------------------+---------------------+-------------------------+---------------+-----------------------+------------------+-------------------+-----------------+---------------------+--------------------+------------------------+-------------------------+-----------------------------+------------+------------+--------------+---------------------+-----------------+-----------------+----------------+---------------+--------------------+--------------------+--------------------+-----------------+-------------------+----------------+-----------------------+-------------------------------+---------------+---------------+----------------+----------------+
            | Slave_IO_State                   | Master_Host   | Master_User | Master_Port | Connect_Retry | Master_Log_File  | Read_Master_Log_Pos | Relay_Log_File          | Relay_Log_Pos | Relay_Master_Log_File | Slave_IO_Running | Slave_SQL_Running | Replicate_Do_DB | Replicate_Ignore_DB | Replicate_Do_Table | Replicate_Ignore_Table | Replicate_Wild_Do_Table | Replicate_Wild_Ignore_Table | Last_Errno | Last_Error | Skip_Counter | Exec_Master_Log_Pos | Relay_Log_Space | Until_Condition | Until_Log_File | Until_Log_Pos | Master_SSL_Allowed | Master_SSL_CA_File | Master_SSL_CA_Path | Master_SSL_Cert | Master_SSL_Cipher | Master_SSL_Key | Seconds_Behind_Master | Master_SSL_Verify_Server_Cert | Last_IO_Errno | Last_IO_Error | Last_SQL_Errno | Last_SQL_Error |
            +----------------------------------+---------------+-------------+-------------+---------------+------------------+---------------------+-------------------------+---------------+-----------------------+------------------+-------------------+-----------------+---------------------+--------------------+------------------------+-------------------------+-----------------------------+------------+------------+--------------+---------------------+-----------------+-----------------+----------------+---------------+--------------------+--------------------+--------------------+-----------------+-------------------+----------------+-----------------------+-------------------------------+---------------+---------------+----------------+----------------+
            | Waiting for master to send event | 192.168.1.155 | mysqlcopy   |        3306 |            60 | mysql-bin.000001 |                 106 | mysqld-relay-bin.000002 |           251 | mysql-bin.000001      | Yes              | Yes               | testdb          | mysql               |                    |                        |                         |                             |          0 |            |            0 |                 106 |             407 | None            |                |             0 | No                 |                    |                    |                 |                   |                |                     0 | No                            |             0 |               |              0 |                |
            +----------------------------------+---------------+-------------+-------------+---------------+------------------+---------------------+-------------------------+---------------+-----------------------+------------------+-------------------+-----------------+---------------------+--------------------+------------------------+-------------------------+-----------------------------+------------+------------+--------------+---------------------+-----------------+-----------------+----------------+---------------+--------------------+--------------------+--------------------+-----------------+-------------------+----------------+-----------------------+-------------------------------+---------------+---------------+----------------+----------------+
        【注意】查看Slave_IO_Running: Yes Slave_SQL_Running: Yes这两个参数的值,如果都是yes说明配置成功
【主从服务器测试】
    1、进入MySQL主服务器
        进入主服务器MySQL控制台
            mysql -uroot -p
        进入数据库
            user testdb;
        创建test表
            CREATE TABLE test ( id int not null,name varchar2(30),gender varchar2(2));
    2、进入mysql从服务器
        进入MySQL控制台
            mysql -uroot -p
        进入数据库
            use testdb;
        显示所有的表
            show tables;
        显示和主服务器一样的表,说明配置成功

【问题】
1、ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'
解:由于mysql 默认的mysql.sock 是在/var/lib/mysql/mysql.sock,但linux系统总是去/tmp/mysql.sock查找,所以会报错
为mysql.sock增加软连接(相当于windows中的快捷方式)。
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

【参考资料】
http://dev.mysql.com/doc/refman/5.6/en/replication-howto.html
http://www.cnblogs.com/cchun/p/3712637.html
 

© 著作权归作者所有

cIouddyy

cIouddyy

粉丝 17
博文 4
码字总数 2635
作品 0
西安
高级程序员
私信 提问
mysql不停库不锁表在线主从配置

mysql不停库不锁表在线主从配置: 说明: 10G以下的数据库:使用mysqldump导出数据和备份恢复比较合适,便捷。 100-500G数据库:使用Percona-Xtrabackup备份工具,在线热备,全量、增量、单表...

ZHENG-JY
2018/09/04
35
0
Mysql 数据库双机热备的配置方法

Mysql 数据库双机热备的配置方法 mysql数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题。还好mysql数据库提供了一种主从备份的机制,其实就是把主数据库的所有的数据同时...

文弱书生_罗剑
2015/08/18
372
0
mysql读写分离

MySQL主从同步的作用 1、可以作为一种备份机制,相当于热备份 2、可以用来做读写分离,均衡数据库负载 MySQL主从同步的步骤 一、准备操作 1、主从数据库版本一致,建议版本5.5以上 2、主从数...

赵二伟24740
2016/03/31
91
0
MySQL备份,恢复方案,mysqlbinlog,mysqldump,主从,主主复制

DBMS数据库管理系统的三层模型:物理层,逻辑层以及视图层。 物理层:决定数据的存储形式。 逻辑层:是一张有一张的表,一行行的数据记录。 视图层:让用户看起来更方便,可有可无。 存储引擎...

wujunqi1996
2018/06/28
0
0
Mysql学习(2)——Mysql双机热备

版权声明:本文为博主原创文章,未经博主允许不得转载。博客地址:http://blog.csdn.net/huqigang,内容如有错误,欢迎留言指出,谢谢! https://blog.csdn.net/huqigang/article/details/7...

胡了了
2018/02/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Security 实战干货:基于配置的接口角色访问控制

1. 前言 欢迎阅读 Spring Security 实战干货 系列文章 。对于受限的访问资源,并不是对所有认证通过的用户开放的。比如 A 用户的角色是会计,那么他就可以访问财务相关的资源。B 用户是人事,...

码农小胖哥
26分钟前
3
0
vue admin template 轻量级 后台管理系统基础模板 vuecli4 分环境打包 统一管理接口地址

本模板目的是为了能在创建项目的时候,减少不必要的时间浪费,例如api接口的封装、axios请求的封装以及基础布局等时间的浪费,故将基础功能提取出来作为公司内部的一个后台基础管理系统,为什...

羊皮卷
28分钟前
2
0
idea免费版注册码

https://www.jiweichengzhu.com/article/eb340e382d1d456c84a1d190db12755c

码农屌丝
28分钟前
4
0
跨越敏捷和devops的鸿沟

day2 更多的是理念思想和一些经验的分享吧 先来个鸡汤: 每个人都有自己的人生高山去攀越,技术人也有技术的高山,不是人生的全部,但又不可缺少的,我们要选对方向,找对方法去坚持去爬山...

ikki8776
28分钟前
4
0
MyEclipse教程:JPA开发(数据库)

1、配置JPA项目 JPA是类似于Hibernate的持久性规范,已成为Java EE 5规范的一部分。JPA使用Java 5注释来控制将普通Java类(POJO)映射到数据库表。 您可以通过创建任意受支持的基础项目类型(...

沫沫77
36分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部