Discuz下的MySQL主从设置

主MySQL设置

1、编辑主MYSQL 服务器的MySQL配置文件my.cnf,在[mysqld]下面添加以下参数:

log-bin=mysql-bin //开启MYSQL二进制日志
server-id=1 //服务器ID不能重复
binlog-do-db=dzx2 //需要做主从备份的数据库名字
expire-logs-days = 7 //只保留7天的二进制日志,以防磁盘被日志占满

2、在 A 服务器添加一个用于主从复制的帐号:
登陆mysql命令行,执行

GRANT REPLICATION SLAVE ON *.* TO '帐号'@'从服务器IP' IDENTIFIED BY '密码';

例如:帐号是 rep,密码是 123,IP 是 192.168.1.3,则执行代码为

GRANT REPLICATION SLAVE ON *.* TO 'rep'@'192.168.1.3' IDENTIFIED BY '123';

3、重启MySQL ,让配置生效

关闭论坛访问,复制数据库备份到从库服务器

1、登录论坛后台,“全局—站点信息”,关闭论坛访问

2、登录MySQL命令行,例如:

mysql -uroot –p

3、在主MySQL服务器上执行命令,把数据库设置成只读状态:

FLUSH TABLES WITH READ LOCK;

4、执行命令,并且记下file及position的值:

show master status;

5、备份需要做主从备份的数据库,用导出成SQL或者直接复制数据库文件方式都可以

6、回到MYSQL命令行窗口,解封数据库只读状态,执行:

UNLOCK TABLES;

7、登录论坛后台,“全局—站点信息”,开放论坛访问

8、将刚才备份出来的数据复制到从库服务器

从MySQL服务器设置

1、编辑 从MYSQL服务器的MySQL配置文件my.cnf,在[mysqld]下面添加以下参数:

server-id=2 //服务器ID不能重复
master-port=3306 //主库的端口
replicate-do-db=dzx2 //需要做复制的数据库名
replicate-ignore-table=dzx2.pre_common_session //自动跳过的表,session表没必要做复制
slave-skip-errors = 1032,1062,126,1114,1146,1048,1396 //自动跳过的错误代码,以防复制出错被中断

2、将主库上备份的数据库恢复到从库

3、重启从库MYSQL

4、登录从库的MySQL命令行,执行:

change master to master_host='192.168.1.2', master_user='rep', master_password='123', master_log_file='file的值', master_log_pos=position的值;
//设置连接信息,file及position的值是之前记录下来,position的值没有单引号,其他的值要单引号

5、执行:

start slave; //启动从库连接

6、查看从库状态:

show slave status\G; //查看连接情况,是不是两个YES,两个YES为成功

7、编辑从MYSQL服务器的MySQL配置文件my.cnf,在[mysqld]下面添加以下参数:

master-host=192.168.1.2 //主库A的IP
master-user=rep //刚才在主库创建的帐号
master-password=123 //密码

服务器配置完成,在论坛配置文件里面进行读写分离设置,

Discuz! X2.5内置了读写分离的功能,方便一些负载比较大的站点使用,降低服务器的负载。但Discuz! X 2.5 默认未开启此功能,需要在配置文件中做相应的修改,此功能才会开启。下面介绍一下开启Discuz! X 2.5读写分离的设置方法:
打开X2的配置文件,config/config_global.php:
编辑

$_config['db']['common']['slave_except_table'] = '';

改为

$_config['db']['common']['slave_except_table'] = 'common_session';

然后在刚才编辑的那行下面加入从库配置:

$_config['db']['slave']['1']['dbhost'] = '192.168.1.2';
$_config['db']['slave']['1']['dbuser'] = 'root';
$_config['db']['slave']['1']['dbpw'] = 'password';
$_config['db']['slave']['1']['dbcharset'] = 'gbk';
$_config['db']['slave']['1']['pconnect'] = '0';
$_config['db']['slave']['1']['dbname'] = 'discuz';
$_config['db']['slave']['1']['tablepre'] = 'pre_';

保存后即可生效。
如果要添加多台从库,那么可以继续添加:

$_config['db']['slave']['2']['dbhost'] = '192.168.1.3;
$_config['db']['slave']['2']['dbuser'] = 'root';
$_config['db']['slave']['2']['dbpw'] = 'password';
$_config['db']['slave']['2']['dbcharset'] = 'gbk';
$_config['db']['slave']['2']['pconnect'] = '0';
$_config['db']['slave']['2']['dbname'] = 'discuz';
$_config['db']['slave']['2']['tablepre'] = 'pre_';

还没有评论,快来抢沙发!

发表评论

  • 😉
  • 😐
  • 😡
  • 😈
  • 🙂
  • 😯
  • 🙁
  • 🙄
  • 😛
  • 😳
  • 😮
  • emoji-mrgree
  • 😆
  • 💡
  • 😀
  • 👿
  • 😥
  • 😎
  • ➡
  • 😕
  • ❓
  • ❗
  • 67 queries in 0.476 seconds