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配置
注意我们在配置数组中新增了两个键:read
和 write
,这两个键对应值都有一个包含单个键“host”的数组,而其所映射的 IP 值分别就是读连接和写连接,读/写连接的其它数据库配置项都共用 mysql
的主数组配置。
如果我们想要覆盖主数组中的配置,只需要将相应配置项放到 read
和 write
数组中即可。在本例中,192.168.1.1
将被用作“读”连接,而 192.168.1.2
将被用作“写”连接。两个数据库连接的凭证(用户名/密码)、前缀、字符集以及其它配置将会共享 mysql
数组中的设置,同理,如果不一样的话,分别在 read
或 write
数组中单独配置即可。
‘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 主从配置的主要内容,如果未能解决你的问题,请参考以下文章