mysql配置主从数据库

时间:2022-09-27 16:09:29

1.目的

  1.1 实现数据备份

  1.2 项目访问时可以实现读写分离,提高访问和操作数据的速度<读写分离好处>

2.背景

  这次的主从配置主要实现主库数据的改变可以实现同步到从库中;

  此次试验的主库为liunx<ubuntu4.8.2> 下mysql 5.6.19,从库为windows10 下mysql 5.6.24;

 3.准备知识

  3.1 在liunx下mysql的配置文件为:

  /etc/mysql/my.conf

  3.2 在windows下mysql的配置文件为:

  mysqlpath/my.ini

   3.3 在不同的系统环境下,配置的文件的路径和后缀名是不同的;

  3.4 在liunx系统环境下,mysql 服务的启动关闭重启的命令如下:

  sudo start mysql; //启动服务
  sudo stop mysql; //关闭服务
  sudo restart mysql; //重启

mysql配置主从数据库

  3.5 每次修改配置文件,需要重启服务再查看结果

4. 配置主从数据库

  4.1 打开3306端口,可以允许远程访问主库端口;

    a.首先查看端口是否打开

    netstat -an|grep 3306

mysql配置主从数据库

    上图是打开的情况下的数据展示,如果没有打开会出现 127.0.0.1 的数据;如果没有打开,则需要到 /etc/mysql/my.conf 中将bind-address = 127.0.0.1 注销

  #bind-address = 127.0.0.1 //注销示例
  bind-address = 127.0.0.1

    重启服务查看端口是否打开;

    b.设置远程可以访问mysql数据库的权限

      进入主库使用sql命令设置权限,如下:    

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| cmdb |
| mysql |
| performance_schema |
| test |
+--------------------+
rows in set (0.00 sec) mysql> use mysql;
Database changed
mysql> update user set host='%' where user='root';
ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY' //虽然报错,但实际更新成功;
// 备选 mysql>grant all privileges on *.* to 'root'@'%' identified by 'xxxxxx';

    

    打开另一个终端,执行如下命令:

[root@zhoujietest ~]#mysql -u root

mysql>delete from user where user='';

mysql>flush privileges; #刷新权限

mysql>\q

    重启服务,执行如下命令查看权限赋予情况:

mysql>mysql -u root -p 
mysql>use mysql; 
mysql>selsct user,host from user;

    可得到如下数据:

mysql配置主从数据库

    host中%表示可以远程使用root账号访问;

  4.2 配置mysql主从配置文件

    主库:192.168.0.175

    从库:192.168.0.170

    a.主库配置 </etc/mysql/my.conf>

    *添加的配置必须在[mysqld]范围内,不然无法启动服务
    [mysqld]
    log-bin=mysql-bin
    server-id=1
    binlog-do-db = cmdb //需要同步的数据库
    #binlog-ignore-db = nodb //不需要同步的数据库

    修改后重启服务,查看主库设置情况,如下:

mysql> show master status;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| binlog.000001 | 1304 | cmdb | |
+---------------+----------+--------------+------------------+
row in set (0.00 sec)

    b.从库配置i<mysqlpath/my.ini>

    设置配置文件:  

[mysqld]
server-id=2 //服务器id,区别于主库的server-id
master-host=192.168.0.175 //主库ip
master-user=rep1 //5.5-
master-password=test123456 //5.5-
master-port=3306 //5.5-
replicate-do-db=cmdb //5.5-
......

    配置文件除server-id外,mysql 5.5+ 版本需要在命令行中设置其余属性:

mysql> CHANGE MASTER TO
-> MASTER_HOST='master_host_name',
-> MASTER_USER='replication_user_name',
-> MASTER_PASSWORD='replication_password',
-> MASTER_LOG_FILE='recorded_log_file_name',//数据需要同show master status 中的数据一致
-> MASTER_LOG_POS=recorded_log_position;//数据需要同show master status 中的数据一致

    启动slave进程

mysql> start slave;
Query OK, 0 rows affected (0.04 sec)

  

    查看slave的状态,如果下面两项值为YES,则表示配置正确:

    Slave_IO_Running: Yes

    Slave_SQL_Running: Yes

mysql配置主从数据库

    c.将主库已有数据复制到从库

      ca.命令复制

      主库:    

      mysql>flush tables with read lock;//停止主库的数据更新操作

      打开新的终端:

    [root@zhoujietest ~]# mysqldump -uroot -ptest123 cmdb > cmdb.sql //生成主数据库的备份(导出数据库)
    [root@zhoujietest ~]# scp cmdb.sql root@192.168.0.170:/root/ //将备份文件传到从库
    mysql>unlock tables;//主库解锁

     

      从库:

mysql>slave stop;//停止从库slave
mysql> create database cmdb default charset utf8;//新建数据库cmdb
[root@ops-dev ~]# mysql -uroot -ptest123 cmdb<cmdb.sql //导入数据
mysql> show databases;//查看从库已有该数据库和数据
+--------------------+
| Database |
+--------------------+
| information_schema |
| cmdb |
| mysql |
| performance_schema |
| test |
+--------------------+

      cb.使用工具<Navicat>直接从主库复制到从库中

    d.主库数据更改后,从库自动更新。

5. 后续问题

  从库修改数据后,会导致从库同步主库出错,无法同步到主库的数据;

  解决方案:重新配置从库数据,重新导入数据,重启服务。

6.项目配置读写分离

  移步:http://www.cnblogs.com/springlight/p/5905720.html

参考资料:

  1.http://www.cnblogs.com/zhoujie/p/mysql1.html

  2.http://dev.mysql.com/doc/refman/5.6/en/replication-howto.html

  3.http://www.linuxdiyf.com/linux/15206.html

  4.http://www.cnblogs.com/linjiqin/p/5270938.html

能力有限,文档可能存在不当之处,各位指正。

mysql配置主从数据库的更多相关文章

  1. MYSQL配置主从同步

    MYSQL配置主从同步 mysql主服务器配置 vim /etc/my.cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql. ...

  2. Mysql的主从数据库没有同步的解决办法

    Mysql的主从数据库没有同步的解决办法 今天发现Mysql的主从数据库没有同步 先上Master库: mysql>show processlist; 查看下进程是否Sleep太多.发现很正常. ...

  3. 解决Mysql的主从数据库没有同步的两种方法

    今天发现Mysql的主从数据库没有同步 先上Master库: mysql>show processlist;   查看下进程是否Sleep太多.发现很正常.show master status; ...

  4. windows与linux中的mysql配置主从

    最近在给学生讲解数据库的主从配置,由于学生电脑里面装的虚拟机是linux的,但是本机的系统是windows的,所以需要用windows中的mysql与linux中的mysql进行主从配置.下面说一下主 ...

  5. Mysql配置主从同步的基本步骤

    # 配置主从同步的基本步骤 #总结为如下的步骤: # .在主服务器上,必须开启二进制日志机制和配置一个独立的ID # .在每一个从服务器上,配置一个唯一的ID,创建一个用来专门复制主服务器数据的账号 ...

  6. MySql配置主从模式 Last&lowbar;IO&lowbar;Error&colon; Fatal error&colon; The slave I&sol;O thread stops because master and slave have equal MySQL server UUIDs&semi; these UUIDs must be different for replication to work&period;

    今天在学习MyCat环境搭建的时候,在配置MySql的主从模式,发现slave在配置完毕后,配置的内容全部正确的情况下,报错了? Last_IO_Error: Fatal error: The sla ...

  7. Mysql配置 主从同步

    目录 一.准备 二.操作 主数据库操作 从服务器操作 一.准备 1.主从数据库版本最好一致 2.主从数据库内数据保持一致,若不一致,可将从库中所有数据删除,并将主库全部数据导入进去 主数据库:182. ...

  8. mysql服务器主从数据库同步配置(转)

    <a href=""></a> <p>首先需要在同一个局域网内的两台机器(当然也可以用一台机器虚拟两台机器出来),都安装上mysql服务.&lt ...

  9. mysql服务器主从数据库同步配置

    首先需要在同一个局域网内的两台机器(当然也可以用一台机器虚拟两台机器出来),都安装上mysql服务. 主机A: 192.168.1.100 从机B: 192.168.1.101 可以有多台从机. 1. ...

随机推荐

  1. Jquery&period;load&lpar;&rpar; 使用

    调用load方法的完整格式是:load( url, [data], [callback] ) url:是指要导入文件的地址. data:可选参数:因为Load不仅仅可以导入静态的html文件,还可以导 ...

  2. Bower是什么?

    一.简介 Bower是一个客户端技术的软件包管理器,它可用于搜索.安装和卸载如JavaScript.HTML.CSS之类的网络资源.其它一些建立在Bower基础之上的开发工具,如YeoMan和Grun ...

  3. ruby正则匹配回车换行符

    如果你使用/^.*$/这种正则是匹配不到回车换行符的. 所以应该像下面这么写: /^[\s\S]*$/

  4. 腾讯云centos 7部署 dotnetcore&plus;Angular2 实践

    版权声明:本文由屈政斌原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/239 来源:腾云阁 https://www.qclo ...

  5. C&plus;&plus;静态存储,动态存储

    什么是静态存储,动态存储静态存储变量通常是在变量定义时就分定存储单元并一直保持不变, 直至整个程序结束. 动态存储变量是在程序执行过程中,使用它时才分配存储单元, 使用完毕立即释放.典型的例子是函数的 ...

  6. ArcEngine 通过SpatialRelDescription删除不相交要素

    ISpatialFilter.SpatialRel设置为esriSpatialRelRelate,并且设置SpatialRelDescription为某个字符串.该字符串的构造方法:该字符串为长度为9 ...

  7. Reference in the manifest does not match the identity of the downloaded assembly

    solution 1 :http://*.com/questions/5337458/error-deploying-clickonce-application-referen ...

  8. JS中数组的迭代方法和归并方法

    昨天总结的JavaScript中的数组Array方法 数组的迭代方法 ES5中为数组定义了5个迭代方法.每个方法都要接收两个参数:要在每一项上面运行的函数和(可选的)运行该函数的作用域对象---影响t ...

  9. MIPCMS V3&period;1&period;0 远程写入配置文件Getshell过程分析&lpar;附批量getshell脚本&rpar;

      作者:i春秋作家--F0rmat 0×01 前言 今天翻了下CNVD,看到了一个MIPCMS的远程代码执行漏洞,然后就去官网下载了这个版本的源码研究了下.看下整体的结构,用的是thinkPHP的架 ...

  10. Locks Set by Different SQL Statements in InnoDB

    A locking read, an UPDATE, or a DELETE generally set record locks on every index record that is scan ...