• Mysql主从配置


    为了提高数据库读写性能,读写分离的思想被提了出来。数据库被分成主数据库和从数据库,主数据库负责写,从数据库负责读。

    拿Mysql来说,Mysql5.7版本自带了主从同步功能。比如需要将Mysql文件夹再多复制一份 

    mysql_1是主,mysql_2是从。

    修改mysql_1的my.ini配置文件。

    [mysql]
    default-character-set=utf8
    
    [mysqld]
    # 同台主机下多个mysql要修改成不同的端口
    port=13306
    
    basedir=D:/Users/dagger/IdeaProjects/software/mysqllist/mysql_1
    datadir=D:/Users/dagger/IdeaProjects/software/mysqllist/mysql_1/data
    
    character-set-server=utf8
    
    default-storage-engine=InnoDB
    
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
    
    # 修改server_id,确保每个mysql实例的server_id不一样
    server_id=13306
    
    log-bin=mysql-bin
    
    # 要同步的数据库
    binlog-do-db=test_0
    binlog-do-db=test_1
    
    # 不要同步的数据库
    binlog-ignore-db=information_schema
    binlog-ignore-db=performance_schema
    binlog-ignore-db=mysql
    binlog-ignore-db=sys
    
    [client]
    port=13306
    default-character-set=utf8
    View Code

     修改mysql_2的my.ini配置文件 

    [mysql]
    default-character-set=utf8
    
    [mysqld]
    # 记得修改这个端口,避免端口冲突
    port=13307
    
    basedir=D:/Users/dagger/IdeaProjects/software/mysqllist/mysql_2
    datadir=D:/Users/dagger/IdeaProjects/software/mysqllist/mysql_2/data
    
    character-set-server=utf8
    
    default-storage-engine=InnoDB
    
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
    
    # server_id也不能重复
    server_id=13307
    
    # 二进制日志备份
    log-bin=mysql-bin
    
    # 要同步的表
    replicate_wild_do_table=test_0.%
    replicate_wild_do_table=test_1.%
    
    # 不要同步的表,从节点不同步的数据库
    replicate_wild_ignore_table=information_schema.%
    replicate_wild_ignore_table=performance_schema.%
    replicate_wild_ignore_table=mysql.%
    replicate_wild_ignore_table=sys.%
    
    [client]
    port=13307
    default-character-set=utf8
    View Code

    安装mysql主从节点的服务 

    在mysql_1/bin目录下:./mysqld --install mysql_1 --defaults-file="mysql_1目录my.ini"

    在mysql_2/bin目录下:./mysqld --install mysql_2 --defaults-file="mysql_2目录my.ini"

    启动两个Mysql服务:

     连接主节点,创建一个用户,并授权replication(可以同步主节点上的数据)。给从节点登陆并同步主节点上的数据。

    create user 'slave_1'@'%' identified by 'slave_1';
    grant replication slave on *.* to 'slave_1'@'%' identified by 'slave_1';

     查看主节点的日志状态

    show master status;

    可以看到,test_0和test_1数据库已经配置好同步了。information_schema,performance_schema,mysql,sys被忽略。

    连接上mysql_2数据库。创建同步任务。master_log_file对应 show master status; 的File。master_log_pos对应Position。

    change master to
    master_host='127.0.0.1',
    master_user='slave_1',
    master_password='slave_1',
    master_port=13306,
    master_log_file='mysql-bin.000008',
    master_log_pos=154;

    查看同步任务是否开启成功, SHOW SLAVE STATUS; Slave_IO_Running和Slave_SQL_Running都为Yes,开启成功。

    如果Slave_IO_Running为No或者Connecting,则查看server_id是否重复,如果没有重复,则去mysql_2data目录下,将auto.cnf删除,然后重启mysql_2服务。

  • 相关阅读:
    前端H5
    nginx的location的匹配规则
    非旺玖原装的PL2303,请联系您的供货商
    Arduino 怎样添加第三方拓展
    Arduino的shiftOut函数作用
    arduino 的analogRead() 和analogWrite()
    composer安装TP的时候:错误提示:zsh: no matches found: 5.1.*
    Bootstrap3 模态框点击无效
    人人商城支付成功后在哪修改订单状态
    人人商城怎样判断订单是否支付
  • 原文地址:https://www.cnblogs.com/dagger9527/p/11837148.html
Copyright © 2020-2023  润新知