mysql主从同步搭建

环境说明

        win10(mysql版本为mysql-5.5.48)做主库,在本机安装了一台虚拟机,里面装了linux(centos7)系统,mysql版本为mysql-5.5.48作为从库。

        下面分为三个部分:1、介绍mysql在Linux的安装和配置
                                        2、介绍mysql在window的安装和配置
                                        3、主从同步需要的操作和配置。(如果本地自己装好了,可以直接看这里就行)

Linux安装中mysql

  1.  下载两个rpm文件,MySQL-client-5.5.48-1.linux2.6.x86_64.rpm和MySQL-server-5.5.48-1.linux2.6.x86_64.rpm。
  2. 放到Linux的/root/Downloads目录下
  3. //首先安装server,输入下面的指令
    rpm -ivh MySQL-server-5.5.48-1.linux2.6.x86_64.rpm
    如果提示“GPD keys...”安装失败,解决方案:rpm -ivh MySQL-server-5.5.48-1.linux2.6.x86_64.rpm --force --nodoeps(原因是有可能rpm安装的时候安装到旧版的GPD keys)

    如果出现了冲突

    先卸载原来的mariadb-libs-1:5.5.68-1.el7.x86_64,
    //删除原来的mariadb-libs-1:5.5.68-1.el7开头的库
    yum -y remove mariadb-libs-1:5.5.68-1.el7*
    卸载完后在重新安装一次

    这次就正常了。
  4. 服务端安装完成后,安客户端
  5. 查看MySQL版本
    mysqladmin --version
    开启MySQL服务
    service mysql start
    关闭mysql服务
    service mysql stop
    重启MySQL服务
    service mysql restart
    


    启动服务:1.设置开机自启 chkconfig mysql on(打开), chkconfig mysql off(关闭)
    检查开机是否自动启动:ntsysv
  6. 安装完成后,直接输入mysql就可以登录了,我们现在要给mysql设置下密码,需要用到安装完成后提示的那两个指令
    给mysql设置登录密码,用户名root,密码root
    /usr/bin/mysqladmin -u root password root

 MySQL的一些信息 

数据库目录:--datadir=/var/lib/mysql。
pid文件目录:--pid-file=/var/lib/mysql/lxx02.pid。

MySQL核心目录:
                
/var/lib/mysql:MySQL安装目录。
                /usr/share/mysql:mysql配置文件目录。
                        my-huge.cnf:高端服务器配置。
                        my-large.cnf:中等服务器配置
                        my-medium.cnf:一般
                        my-small.cnf:较小
                        以上配置文件mysql默认不能识别,默认只识别/etc/my.cnf。
                        我们把my-huge.cnf复制一份到/etc/文件夹下,并改名为my.cnf。
                /usr/bin:命令目录(mysqladmin,mysqldump等命令)

mysql配置:

查看mysql的字符编码
show variables like '%char%';

在/etc/my.cnf文件中[mysqld]标签下添加下面这些配置
character_set_server=utf8
character_set_client=utf8
collation_server=utf8_general_ci #排序方式
server-id=2    #设置从节点的id,不能跟别的mysql一样,主从同步要用
log-bin=mysql-bin    #开启binlong

#在mysql客户端执行
#授权远程返回,这个命令有可能授权不了,如果错了在百度下别的命令,之前在安装遇到过这个问题
grant all privileges on *.* to 'root'@'192.168.1.%' identified by 'root' with grant option ;
#授权后刷新让立刻生效。
flush privileges;

上面改完重启mysql
service mysql restart

关闭Linux防火墙
service iptables stop;

重启后就可以在navicat上连接登录了

 

 window系统mysql下载与安装

下载地址:MySQL :: Download MySQL Community Server (Archived Versions)

 

 

选择自定义安装

 

选择自己想要的安装路径

 

 

直接启动MySQL配置,没有这个选项的话可以在mysql安装的bin目录下打开MySQLInstanceConfig.exe,下面配置的东西,一般都会放到:C:\ProgramData\MySQL\MySQL Server 5.5\my.ini这个文件中

 

 

 

 

 

 

 

 

 

 

 

 

 

 主从同步

先看下mysql主从同步原理

        master将改变的数据记录到binary log中,然后会有专门的线程同步给slave,slave的io线程会把同步过来的数据记录到relay log日志中,relay log在从数据中做指令回放,从而达到主从一致。
       

异步复制与半同步复制

异步复制:MySQL主从集群默认采用的是一种异步复制的机制。主服务在执行用户提交的事 务后,写入binlog日志,然后就给客户端返回一个成功的响应了。

 半同步复制:半同步复制机制是一种介于异步复制和全同步复制之前的机制。主库在执行完客 户端提交的事务后,并不是立即返回客户端响应,而是等待至少一个从库接收并写 到relay log中,才会返回给客户端。MySQL在等待确认时,默认会等10秒,如果超 过10秒没有收到ack,就会降级成为异步复制。

 

 MySQL binlog有三种模式:Row、Statement 和 Mixed 。

主库的配置

        windows:(mysql:my.ini)文件
        linux:(mysql:my.cnf)文件

配置前记得检查权限,比如远程访问权限,和防火墙处理好。

 my.ini文件配置

#在[mysqld]节点下添加
#master的id
server-id=1
#binary log,开启binlong文件,并指定文件路径
log-bin="C:/Program Files/MySQL/data/mysql-bin"
#异常信息的日志
log-error="C:/Program Files/MySQL/data/mysql-error"

#Path to installation directory. All paths are usually resolved relative to this.
#MySQL根路径
basedir="C:/Program Files/MySQL/MySQL Server 5.5/"
#指定需要同步哪些数据库(默认全部数据库)
#binlog-do-bo=mydb01

#指定需要 不同步哪些数据库(排除)
#binlog-ignore-db=mysql

 授权从数据库

#授权IP为192.168.1开头的账号为root,密码为root作为我的从计算机
GRANT REPLICATION slave,reload,super ON *.* to 'root'@' 192.168.1.%' identified by 'root';
#刷新使其立刻生效
flush privileges;

 查看主数据库的状态
        file:同步的二进制文件
        position:二进制文件记录的位置
        binlog_ignore_db:忽略的数据库
        binlog_do_db:需要同步的数据库

 

 从库的配置

        my.cnf文件配置

#从库的id,需要在集群中唯一,代表身份
server-id=2
#开启binlong文件
log-bin=mysql-bin
#需要同步的数据库
replicate-do-db=mydb01

在从库中指定主库


#在mysql客户端执行,查看server_id的值。
show variables like '%server_id%';

#配置server_id的值(有时候配置文件设置的server_id会不生效需要手动配置)
set global server_id=3;

下面的操作是为了确保server_id有被修改到,下面所有的start slave和stop slave都不要执行,这是我在实验的时候多操作了。

change master to 
#主库的ip
master_host='192.168.1.5',
#主库的用户名
master_user='root',
#主库的密码
master_password='root',
master_port=3306,
#主库的binlog日志
master_log_file='mysql-bin.000001',
#主库的binlog日志的记录位置
master_log_pos=13061;

#执行完上面这些在开启slave服务
#开启从服务
start slave;

#查看主从同步信息
show slave status  \G

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值