热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Mysql5.5主从/读写分离配置

数据库配置主数据库:172.20.17.211从数据库:172.20.17.210一、创建主从数据同步账户(主从两台数据库都要执行)#开启远程访问支持usrlocalmysqlbi
数据库配置

主数据库:172.20.17.211
从数据库:172.20.17.210

一、创建主/从数据同步账户( 主从两台数据库都要执行 )

# 开启远程访问支持
/usr/local/mysql/bin/mysql -h172.20.17.211 -uroot -pwoshishui # 登录数据库
update mysql.user set Host='%' where User='root' and Host='localhost'; # 开启Mysql远程访问支持
select Host,User,Password from mysql.user limit 10 \G; # 查看修改结果
flush privileges; # 刷新权限
# 主/从数据库添加授权账户
CREATE USER 'xzdesk'@'%' IDENTIFIED BY 'woshishui'; # 创建授权账户xzdesk 密码woshishui
GRANT ALL ON *.* TO 'xzdesk'@'127.0.0.1'; # 授权xzdesk用户拥有全部数据库的所有权限
GRANT ALL ON `ceshi`.* TO 'xzdesk'@'%'; # 授权xzdesk用户拥有ceshi数据库的所有权限
# 第二种 授权和添加账户一起操作
# GRANT ALL ON `ceshi`.* TO 'xzdesk'@'127.0.0.1' IDENTIFIED BY 'woshishui';
# 撤销用户授权
REVOKE ALL ON *.* TO 'xzdesk'@'%'; # 撤销xzdesk的所有授权
# REVOKE delete ON databasename.tablename FROM 'username'@'host'; # 没搞明白撒意思,不用执行
# 创建授权用户
#insert into mysql.user(Host,User,Password) values('172.20.17.210','xzdesk',password('woshishui'));
# 删除xzdesk用户( 授权信息无法删除 )
#DELETE FROM user WHERE User="xzdesk" and Host="%";

二、主服务器配置(172.20.17.211)

/usr/local/mysql/bin/mysql -h172.20.17.211 -uroot -pwoshishui
create database ceshi; # 创建ceshi数据库
flush tables with read lock; # 数据库只读锁定命令
# 导出主服务器数据库
/usr/local/mysql/bin/mysqldump -h172.20.17.211 -uroot -pwoshishui ceshi > /data/ceshi_20160609.sql
unlock tables; # 解除锁定
# 主服务器数据导入从服务器
# 第一种方法
/usr/local/mysql/bin/mysql -h172.20.17.210 -uroot -pwoshishui # 进入从服务器MySQL控制台
create database ceshi; # 创建数据库
use ceshi # 进入数据库
/usr/local/mysql/bin/mysql -h172.20.17.210 -uroot -pwoshishui ceshi # 第二种方法
/usr/local/mysql/bin/mysql -h172.20.17.210 -uroot -pwoshishui # 进入从服务器MySQL控制台
create database ceshi; # 创建数据库
use ceshi # 进入数据库
source /data/ceshi_20160609.sql # 导入备份文件到数据库

四、配置MySQL主服务器的my.cnf文件

vim /etc/my.cnf # 编辑配置文件,在[mysqld]部分添加下面内容
server-id=1 # 设置服务器id,为1表示主服务器,注意:如果原来的配置文件中已经有这一行,就不用再添加了。
log_bin=mysql-bin # 启动MySQ二进制日志系统,注意:如果原来的配置文件中已经有这一行,就不用再添加了。
binlog-do-db=ceshi # 需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
binlog-ignore-db=mysql # 不同步mysql系统数据库
binlog-ignore-db=performance_schema
binlog-ignore-db=information_schema
:wq! #保存退出
service mysqld restart # 重启MySQL
mysql -u root -p # 进入mysql控制台
show master status; # 查看主服务器,出现以下类似信息
+------------------+----------+--------------+---------------------------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+---------------------------------------------+
| mysql-bin.000006 | 575 | ceshi | mysql,performance_schema,information_schema |
+------------------+----------+--------------+---------------------------------------------+

五、配置MySQL从服务器的my.cnf文件

vim /etc/my.cnf # 编辑配置文件,在[mysqld]部分添加下面内容
server-id=2 # 配置文件中已经有一行server-id=1,修改其值为2,表示为从数据库
log-bin=mysql-bin # 启动MySQ二进制日志系统,注意:如果原来的配置文件中已经有这一行,就不用再添加了。
replicate-do-db=ceshi # 需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
replicate-ignore-db=mysql # 不同步mysql系统数据库
replicate-ignore-db=performance_schema
replicate-ignore-db=information_schema
:wq! #保存退出
service mysqld restart # 重启MySQL
/usr/local/mysql/bin/mysql -h172.20.17.210 -uroot -pwoshishui
slave stop; # 停止slave同步进程
change master to master_host='172.20.17.211',master_user='xzdesk',master_password='woshishui',master_log_file='mysql-bin.000006' ,master_log_pos=575; #执行同步语句
slave start; # 开启slave同步进程
SHOW SLAVE STATUS\G # 查看slave同步信息,出现以下内容
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 172.20.17.211
Master_User: root
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000006
Read_Master_Log_Pos: 341
Relay_Log_File: mysql-relay-bin.000002
Relay_Log_Pos: 487
Relay_Master_Log_File: mysql-bin.000006
Slave_IO_Running: Yes # 此状态必须YES
Slave_SQL_Running: Yes # 此状态必须YES
Replicate_Do_DB: ceshi
Replicate_Ignore_DB: mysql,performance_schema,information_schema
注意:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。
注意:MySQL 5.1.7版本之后,已经不支持把master配置属性写入my.cnf配置文件中了,只需要把同步的数据库和要忽略的数据库写入即可。

推荐阅读
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • mysql 授权!!
    为什么80%的码农都做不了架构师?MySQL的权限系统围绕着两个概念:认证-确定用户是否允许连接数据库服务器授权-确定用户是否拥有足够的权限执 ... [详细]
  • 1、编写一个Java程序在屏幕上输出“你好!”。programmenameHelloworld.javapublicclassHelloworld{publicst ... [详细]
  • binlog2sql,你该知道的数据恢复工具
    binlog2sql,你该知道的数据恢复工具 ... [详细]
  • 本文介绍了如何使用Node.js通过两种不同的方法连接MongoDB数据库,包括使用MongoClient对象和连接字符串的方法。每种方法都有其特点和适用场景,适合不同需求的开发者。 ... [详细]
  • 本文详细介绍了Oracle 11g中的创建表空间的方法,以及如何设置客户端和服务端的基本配置,包括用户管理、环境变量配置等。 ... [详细]
  • 本文详细介绍了在Linux操作系统上安装和部署MySQL数据库的过程,包括必要的环境准备、安装步骤、配置优化及安全设置等内容。 ... [详细]
  • 本文介绍了如何在两个Oracle数据库(假设为数据库A和数据库B)之间设置DBLink,以便能够从数据库A中直接访问和操作数据库B中的数据。文章详细描述了创建DBLink前的必要准备步骤以及具体的创建方法。 ... [详细]
  • 在 Ubuntu 22.04 LTS 上部署 Jira 敏捷项目管理工具
    Jira 敏捷项目管理工具专为软件开发团队设计,旨在以高效、有序的方式管理项目、问题和任务。该工具提供了灵活且可定制的工作流程,能够根据项目需求进行调整。本文将详细介绍如何在 Ubuntu 22.04 LTS 上安装和配置 Jira。 ... [详细]
  • 搭建个人博客:WordPress安装详解
    计划建立个人博客来分享生活与工作的见解和经验,选择WordPress是因为它专为博客设计,功能强大且易于使用。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • 本文作为《WM平台上使用Sybase Anywhere 11》系列的第二篇,将继续探讨在Windows Mobile (WM) 系统中如何高效地操作Sybase Anywhere 11数据库。继上一篇关于安装与基本测试的文章之后,本篇将深入讲解数据库的具体操作方法。 ... [详细]
  • 在尝试启动Java应用服务器Tomcat时,遇到了org.apache.catalina.LifecycleException异常。本文详细记录了异常的具体表现形式,并提供了有效的解决方案。 ... [详细]
  • 本文介绍如何通过参数化查询来防止SQL注入攻击,确保数据库的安全性。示例代码展示了在C#中使用参数化查询添加学生信息的方法。 ... [详细]
author-avatar
大盗哈喽小马甲_943
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有