• mysql主从复制的介绍


    引用:https://my.oschina.net/u/255939/blog/505598

    MySQL复制就是一台MySQL服务器(slave)从另一台MySQL服务器(master)进行日志的复制然后再解析日志并应用到自身,类似Oracle中的Data Guard。

    MySQL复制有那些好处:

    • 第一是解决宕机带来的数据不一致,因为MySQL复制可以实时备份数据;

    • 第二点是减轻数据库服务器的压力,多台服务器的性能一般比单台要好。但是MySQL复制不适合大数据量,大数据量推荐使用集群。

    MySQL复制过程分成三步:

    • master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events;

    • slave将master的binary log events拷贝到它的中继日志(relay log);

    • slave重做中继日志中的事件,将改变应用到自己的数据库中。

    MySQL复制是异步的且串行化的

    MySQL复制原理图

    Mysql主从复制的搭建

     环境准备

    主机 win 10  ip: 10.22.75.158 

    从机 ubuntu 15.0.4 ip:  192.168.137.128 

    1.主机的配置

    找到mysql的配置文件my.ini,并将下面的添加进去,[mysql]和[mysqld]是要加的

    max_binlog_size表示最大的二进制文件大小,expire_logs_days 是日志的过期时间

    server-id 是主机的id要求是必须唯一的

    binlog-do-db,binlog-ignore-db 分别是要同步的数据库和忽略的数据库,如果不配置这两个应该是对mysql下的所有数据库进行同步,包括数据库的创建等,我这里配置的是test数据库(mysql登入 命令 mysql -u root -p 回车 然后输入密码)

    [mysql]
    
    default-character-set=utf8
    [mysqld]
    log-bin="C:/Program Files/MySQL/MySQL Server 5.5/binlog"
    expire_logs_days=10
    max_binlog_size=100M
    server-id=1
    binlog-do-db=test
    binlog-ignore-db=mysql

    配置完后可以查看下是否起效

    可以看到log_bin 是on 

    在master上配置复制所需要的账户,%表示任何远程地址的root用户都可以连接master主机

    GRANT replication slave ON *.*TO root@'%' IDENTIFIED BY 'gqb101112';

    identified 是密码。

    在主机创建test 数据库,一张表 gqb 

    主表的结构是这样的。

    mysql从机的配置

    1.mysql的安装

    刚装完的ubuntu 先运行 apt-get update 来更新软件包列表,然后再运行命令apt-get mysql-server mysql-client 来安装完 mysql

    2.配置服务id

    [mysqld]
    server-id=2
    character_set_server=utf8
    [client]
    default-character-set=utf8

    从机可以不配置bin-log 也可以配置,进入mysql

    上面master_log_pos=4118的位置是从下面这幅图中Position字段的值

    master_log_file可以在主机中通过 show master status 查看文件名。

    然后开启从机的slave  运行命令行 start slave;然后通过 show slave statusG; 来查看状态

    上面划线的是mysql开启的两个线程,分别来读取主机上的二进制文件和执行mysql 。接下来在主机上插入数据,然后查看从机的数据有么有更新,运行结果就是下面三张图

    配置过程中遇到的问题

    就是ubuntu表的字段的字符集不是utf8 导致主从复制时候出现错误,导致中断同步;

    首先将 ubuntu的字符集配置成 h_CN.utf8

    1,查看系统支持的字符集
     locale -a
    结果:
    feng@feng :~$ locale -a
    C
    en_AU.utf8
    en_BW.utf8
    en_CA.utf8
    en_DK.utf8
    en_GB.utf8
    en_HK.utf8
    en_IE.utf8
    en_IN
    en_NZ.utf8
    en_PH.utf8
    en_SG.utf8
    en_US.utf8
    en_ZA.utf8
    en_ZW.utf8
    POSIX
    zh_CN.utf8
    zh_HK.utf8
    zh_SG.utf8
    zh_TW.utf8


    2,修改字符集
    export.utf8

    修改后,可以通过 locale 查看下当前的字符集

    如何修改 字段的字符集:http://blog.csdn.net/lyjtynet/article/details/6261066

    如何修改配置ubuntu mysql 的字符集:http://blog.csdn.net/huazhizui/article/details/8637002

  • 相关阅读:
    排序算法
    【转】《分享一下我研究SQLSERVER以来收集的笔记》未整理
    D3.js学习记录
    D3.js学习记录【转】【新】
    JAVA FILE or I/O学习
    JAVA GUI学习
    android一键锁屏
    源文件如何转换到可执行文件
    手动搭建maven项目
    ThinkingInJava----第11章 持有对象
  • 原文地址:https://www.cnblogs.com/jiftle/p/6412076.html
Copyright © 2020-2023  润新知