msyql 主从配置

Posted g921123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了msyql 主从配置相关的知识,希望对你有一定的参考价值。

vim /etc/mysql/my.cnf;
# 以下部分一定要配置在[mysqld]后面
[mysqld] 
log-bin=mysql-bin  
server-id=1        //设置数据库服务器唯一ID,这里我们指定为1。
binlog-do-db=hyii2  //设置需要同步的数据库,如果需要设置多个,则加入多条这行语句,若需同步所有库,则无需此项
重启数据库
service mysql restart
登陆
mysql -u root -p //然后输入密码登录
 进入数据库之后给主数据库授权一个可以进行复制的用户,执行如下命令:
mysql> grant replication slave on *.* to slave@% identified by 123456;
查看是否创建成功
mysql> use mysql;
mysql> select user,host from user;

技术分享图片

查看主数据库信息
mysql> show master status;

技术分享图片

以上的信息需要记一下 从数据库会用到

 

从库配置

 连接从库,修改mysql配置文件 /etc/mysql/my.cnf,这部分一定要配置在[mysqld]后面

登录到从库的数据库,做同步设置(此处要用到上面的数据)

[mysqld]
server-id=2

 

mysql> slave stop; //先关闭库服务

mysql> change master to 
master_host=192.168.0.101,
master_user=slave,
master_password=123456,
master_log_file=mysql-bin.000002,
master_log_pos=154;

mysql> slave start; //启动库服务

测试同步结果

在主库hyii2中新建一个表test,然后看下从库是否相应生成对应的test表,如果生成了那么恭喜你,主从同步配置就成功了。

 

 

实际应用中可能会用到单个表的同步,或者部分表的同步,只需要在主库的/etc/my.cnf里加上

只复制某个表replicate-do-table=tablename
只复制某些表(可用匹配符)replicate-wild-do-table=tablename%
只复制某个库replicate-do-db=dbname
只复制某些库replicte-wild-do-db=dbname%
不复制某个表replicate-ignore-table=tablename

 

Yii2配置

[
    class => yiidbConnection,

    // configuration for the master
    dsn => dsn for master server,
    username => master,
    password => ‘‘,

    // common configuration for slaves
    slaveConfig => [
        username => slave,
        password => ‘‘,
        attributes => [
            // use a smaller connection timeout
            PDO::ATTR_TIMEOUT => 10,
        ],
    ],

    // list of slave configurations
    slaves => [
        [dsn => dsn for slave server 1],
        [dsn => dsn for slave server 2],
        [dsn => dsn for slave server 3],
        [dsn => dsn for slave server 4],
    ],

    //如果有多个主库,否则无需如下配置
    masters => [
        [dsn => dsn for master server 1],
        [dsn => dsn for master server 2],
    ],
]

 

 

Laravel配置

注意我们在配置数组中新增了两个键:readwrite,这两个键对应值都有一个包含单个键“host”的数组,而其所映射的 IP 值分别就是读连接和写连接,读/写连接的其它数据库配置项都共用 mysql 的主数组配置。

如果我们想要覆盖主数组中的配置,只需要将相应配置项放到 readwrite 数组中即可。在本例中,192.168.1.1 将被用作“读”连接,而 192.168.1.2 将被用作“写”连接。两个数据库连接的凭证(用户名/密码)、前缀、字符集以及其它配置将会共享 mysql 数组中的设置,同理,如果不一样的话,分别在 readwrite 数组中单独配置即可。

mysql => [
    read => [
        host => 192.168.1.1,
    ],
    write => [
        host => 196.168.1.2
    ],
    driver    => mysql,
    database  => database,
    username  => root,
    password  => ‘‘,
    charset   => utf8,
    collation => utf8_unicode_ci,
    prefix    => ‘‘,
],

对于大部分应用来说都是读多写少,所以面对这种情况,可如下配置多个读连接,

mysql => [
    driver => mysql,
    read => [
        host => [193.168.1.1, 194.168.1.1]
    ],
    write => [
        host => 196.168.1.2
    ],
    //
]

 

 

 

TP5配置(前主后从)

    // 数据库类型
    type            => mysql,
    // 服务器地址
    hostname        => 192.168.36.22,192.168.36.23,
    // 数据库名
    database        => linux,
    // 用户名
    username        => root,root,
    // 密码
    password        => [email protected],[email protected],
    // 端口
    hostport        => 3306,3306,
    // 连接dsn
    dsn             => ‘‘,
    // 数据库连接参数
    params          => [],
    // 数据库编码默认采用utf8
    charset         => utf8,utf8,
    // 数据库表前缀
    prefix          => tp_,
    // 数据库调试模式
    debug           => true,
    // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
    deploy          => 1,
    // 数据库读写是否分离 主从式有效
    rw_separate     => true,
    // 读写分离后 主服务器数量
    master_num      => 1,
    // 指定从服务器序号
    slave_no        => ‘‘,
    // 是否严格检查字段是否存在
    fields_strict   => true,
    // 数据集返回类型
    resultset_type  => array,
    // 自动写入时间戳字段
    auto_timestamp  => false,
    // 时间字段取出后的默认时间格式
    datetime_format => Y-m-d H:i:s,
    // 是否需要进行SQL性能分析
    sql_explain     => false,




以上是关于msyql 主从配置的主要内容,如果未能解决你的问题,请参考以下文章

msyql 主从配置

msyql主从复制线程介绍

msyql 主从备份

msyql的备份和复制和atlas

msyql主从畚份

msyql主从复制 Last_IO_Errno: 1042