msyql 主从配置

发布时间:2019-01-12 整理:脚本之家 作者:未知
脚本之家收集整理的这篇文章主要介绍了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;

blob.png

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

Screenshot-0.png

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

从库配置

连接从库,修改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' => 'yii\db\Connection',// configuration for the master
    'dsn' => 'dsn for master server','username' => 'master','password' => '',// common configuration for slaves
    'slaveConfig' => [
        'username' => 'slave','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']
    ],//
]

TP5配置(前主后从)

    // 数据库类型
    'type'            => 'mysql',// 服务器地址
    'hostname'        => '192.168.36.22,192.168.36.23',// 数据库名
    'database'        => 'linux',// 用户名
    'username'        => 'root,root',// 密码
    'password'        => 'junwang@2014,junwang@2014',// 端口
    '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 主从配置所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

标签: