美文网首页我爱编程
Linux下配置mysql主从数据库

Linux下配置mysql主从数据库

作者: 你的微笑啊ty | 来源:发表于2017-12-25 16:53 被阅读0次

    一、需求

        首先公司用的是windows系统,数据库为SQL Server,但是因为数据获取速度问题,需要换成Linux系统+mysql数据库,为了测试是否能提高性能,就在两台服务器(windows)安装虚拟机,然后安装Linnux操作系统Ubuntu,并安装mysql。

    二、准备

    两台服务器:winserver2008 + ubuntu(192.168.20.8)+mysql  主服务器

                            win10 +ubuntu(192.168.20.3)+mysql  从服务器

    同步数据库名:MyHz

    同步账号:myslave

    同步密码:123456

    tip:此时192.168.20.8已经有MyHz数据库

    三、配置

    主服务器(192.168.20.8)

    1.修改mysql配置文件

    vi /etc/mysql/my.cnf

    #键入 /server-id 找到server-id的位置,把以下内容对照设置进去,键入 i,激活输入状态

    #注意,这里的Master与Slave的server-id不能相同

    server-id               = 1

    log_bin                 = mysql-bin

    binlog_do_db            = MyHz #如果需要同时同步多个数据库,请另起一行设置binlog_do_db            =需要同步的数据库名称

    binlog_ignore_db        = mysql

    2.验证设置

    service mysqld  restart#重启MySQL

    mysql -u root -p#进入mysql控制台

    show variables like 'server_id';#查看server-id的值是否为1

    mysql> show variables like 'server_id';

    mysql> show master status;  #查看主服务器


    tip:这里记住File的值:mysql-bin.000001和Position的值:1599,后面会用到。

    2.建立用于replication的账号,赋予从库权限帐号,允许用户在主库上读取日志,赋予192.168.20.3也就是Slave机器有File权限,只赋予Slave机器有File权限还不行,还要给它REPLICATION SLAVE的权限才可以

    GRANT FILE ON *.* TO 'myslave'@'192.168.20.3' IDENTIFIED BY '123456';

    grant replication slave on *.*  to 'myslave'@'192.168.20.3' identified by '123456' ;#授权用户slave从192.168.20.3(从服务器)访问数据库,只具有备份的权限,grant replication on 数据库名.表名(*表示数据库的所有表)

    flush privileges;  刷新系统授权表

    3.导出MyHz数据库(在终端进行,不是在mysq内)

    mysqldump -u root -p --default-character-set=utf8 --opt -Q -R --skip-lock-tables MyHz > /home/hnc/MyHz.sql

    #在MySQL主服务器进行操作,导出数据库MyHz到/home/MyHz.sql(在终端执行,而不是在mysql内执行)

    4.上传MyHz.sql文件到从服务器的/home

    scp /home/hnc/MyHz.sql 'hnc'@192.168.20.3:/home

    #把home/hnc目录下的MyHz.sql 数据库文件上传到MySQL从服务器的home目录下面

    scp上传文件

    从服务器(192.168.20.3)

    1.修改mysql配置文件

    #具体的路径以及版本都与Master服务器一样

    vi /etc/mysql/my.cnf

    #请对照设置,如下

    user         = mysql

    log-bin     = mysql-bin

    server-id        = 2

    replicate-do-db        = MyHz

    replicate-ignore-db    = mysql

    2.验证设置

    mysql> show variables like 'server_id';

    验证

    tip:需要验证,如果server_id设置失败,最后同步的时候有Slave_IO_Running=No失败

    3.导入MyHz.sql到从服务器数据库

    mysql  -u root -p#进入从服务器MySQL控制台

    create database MyHz;#创建数据库

    use MyHz#进入数据库

    source  /home/MyHz.sql#导入备份文件到数据库

    4.执行同步

    slave stop;#停止slave同步进程

    change master to master_host='192.168.20.8',master_user='myslave',master_password='123456',master_log_file='mysql-bin.000011',master_log_pos=1599;#执行同步语句

    slave start;#开启slave同步进程

    SHOW SLAVE STATUS\G#查看slave同步信息

    若   Slave_IO_Running: Yes

           Slave_SQL_Running: Yes

    则 同步成功 !

    Tip:

    遇到错误:Slave_IO_Running:No 从服务器设置server_id失败

    解决:

    1.stop slave

    2.set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

    3.start slave

    遇到错误:Slave_SQL_Running:No    主键重复

    同步错误

    解决:通过修改mysql的配置文件,让从库的同步线程忽略这个错误,方法:修改mysql配置文件 /etc/my.cnf 在 [mysqld]下加一行 slave_skip_errors = 1062 ,保存.重启mysql. mysql slave可以正常同步了.

    遇到错误:Slave_SQL_Running:Connecting   

    解决:未给myslave用户赋予查看文件的权限,导致连接失败,通过GRANT FILE ON *.* TO 'myslave'@'192.168.20.3' IDENTIFIED BY '123456';可以解决

    相关文章

      网友评论

        本文标题:Linux下配置mysql主从数据库

        本文链接:https://www.haomeiwen.com/subject/fskuixtx.html