云服务器MySQL主从配置完全解读
2018-06-17 23:59:45来源:未知 阅读 ()
配置时环境:腾讯云服务器,云服务器上的MySQL5.7,未配置过主从,如环境不一致,请谨慎操作。我的Master主机(以下称主机)公网IP是119.29.234.43、内网ip是10.104.190.222,Slave从机(以下称从机)的IP不用关心(主机设权限为所有IP都可以访问,使用”%“实现),请修改为你自己的并在下面代码包含公网IP的地方进行相应的修改。(蓝色字体是所有操作主机的命令步骤,绿色字体是操作从机的命令步骤,底部是供老鸟使用命令集合)
腾讯云服务器如图所示:
具体步骤:
1.登录云服务器(如主机,从机未安装jdk和MySQL请操作2 3 ,否请跳过),下面是控制台用户命令操作
2.安装JDK:
sudo apt-get install openjdk-8-jdk
y
3.安装MySQL:
sudo apt-get install mysql-server
账号: root
密码: root
主机配置
4.1修改mysqld.cnf文件信息
cd /etc/mysql/mysql.conf.d/
sudo vim mysqld.cnf 此时打开mysqld.cnf出现大量信息
i 进入编辑模式
↓ 一直操作向下箭头,找到信息底部白色的两行代码,这部分代码即是被注释的代码,如图:
删除#,修改binglog_do_db = db_zhanye_sm,binlog_ignore_db = mysql 。 其中db_zhanye_sm是要同步的数据库名称,操作后如下图所示
找到bing-adress 把127.0.0.1修改为腾讯云主机内网ip 10.104.190.222,不修改会导致等下MySQL无法重启
Esc 退出vim编辑状态
:wq 保存修改内容,并回到控制台(第一步":"具体操作按同时按住Shift ;两个键 第二步w 第三步q 第四步回车键 )
mysql -u root -p 打开数据库,接下来输入数据库密码
root 输入密码后进入数据库
接下来是创建一个新用户用来远程连接使用:
在MySQL中输入以下命令 注释:username - 你将创建的用户名, host - 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost, 如果想让该用户可以从任意远程主机登陆,可以使用通配符%. password - 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器。MySQL里面输入命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password';
create user 'Edward'@'%' IDENTIFIED BY '123';
在MySQL中操作此命令,此处是授权命令。例如:GRANT privileges ON databasename.tablename TO 'username'@'host';privileges - 用户的操作权限,如SELECT , INSERT , UPDATE 等(详细列表见该文最后面).如果要授予所的权限则使用ALL.;databasename - 数据库名,tablename-表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示, 如*.*. 例子:( GRANT SELECT, INSERT ON test.user TO 'pig'@'%';)
GRANT SELECT,INSERT ON db_zhanye_sm.* TO 'Edward'@'%';
用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令: GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;
GRANT privileges ON db_zhanye_sm.test TO 'Edward'@'%' WITH GRANT OPTION;
授予从机复制表权限,示例:GRANT REPLICATION SLAVE ON *.* TO 'user'@'X.X.X.X' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'Edward'@'%' IDENTIFIED BY '123';
exit 退出数据库操作
sudo /etc/init.d/mysql restart 重启数据库
mysql -u root -p 登录数据库,
root
show master status; 显示信息如下图所示,注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化。记录File 和 Position的值并给从机使用;
主机命令集合,供老鸟使用
sudo apt-get install openjdk-8-jdk sudo apt-get install mysql-server cd /etc/mysql/mysql.conf.d/ sudo vim mysqld.cnf 取消注释,修改 binglog_do_db = binlog_ignore_db = 腾讯云安全规则修改,找到bing-adress 把127.0.0.1替换为腾讯云主机内网ip Esc :wq mysql -u root -p create user 'user'@'%' IDENTIFIED BY 'password'; GRANT SELECT,INSERT ON db_zhanye_sm.* TO 'user'@'%'; GRANT privileges ON db_zhanye_sm.test TO 'user'@'%' WITH GRANT OPTION; GRANT REPLICATION SLAVE ON *.* TO 'user'@'%' IDENTIFIED BY 'password'; sudo /etc/init.d/mysql restart mysql -u root -p show master status;
从机配置:
4.2修改mysqld.cnf文件信息
cd /etc/mysql/mysql.conf.d/
sudo vim mysqld.cnf 此时打开mysqld.cnf出现大量信息
i 进入编辑模式
↓ 一直操作向下箭头,在[mysqld]下一行添加:
[mysqld]
server-id = 2
relay-log = slave-relay-bin
relay-log-index = slave-relay-bin.index
Esc 退出vim编辑状态
:wq 保存修改内容,并回到控制台(第一步":"具体操作按同时按住Shift ;两个键 第二步w 第三步q 第四步回车键 )
重启MySQL,命令:
sudo /etc/init.d/mysql restart
3.登录MySQL
mysql -u root -p 打开数据库,接下来输入数据库密码
root 输入密码后进入数据库
stop slave; 停止slave服务
在MySQL中输入以下命令,即可连接Master主服务器:此时需要主机提供记录的File 和 Position的值
change master to master_host='119.29.234.43',master_port=3306,master_user='Edward',master_password='123',master_log_file='mysql-bin.000009',master_log_pos=154;
备注:master_host对应主服务器的外网IP地址,master_port对应主服务器的端口(3306),master_log_file对应show master status显示的File列:mysql-bin.000009,master_log_pos对应Position列:154,否则有可能出现同步失败。
exit 退出MySQL
sudo /etc/init.d/mysql restart 重启数据库
登录MySQL
mysql -u root -p 打开数据库,接下来输入数据库密码
root 输入密码后进入数据库
start slave; 启动Slave数据同步
show slave status\G; 如果slave_io_running和slave_sql_running都为yes,那么表明可以成功同步了
从机命令集合,供老鸟使用
cd /etc/mysql/mysql.conf.d/ sudo vim mysqld.cnf [mysqld] server-id = 2 relay-log = slave-relay-bin relay-log-index = slave-relay-bin.index sudo /etc/init.d/mysql restart mysql -u root -p start slave; stop slave; change master to master_host='119.29.234.43',master_port=3306,master_user='Edward',master_password='123',master_log_file='mysql-bin.000009',master_log_pos=154; show slave status\G;
实现同步数据库
主机数据库创建:
在主机上登录MySQL
mysql -u root -p 打开数据库,接下来输入数据库密码
root 输入密码后进入数据库
查看数据库: show databases;
创建数据库并设置编码UTF8: CREATE DATABASE `db_zhanye_sm` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
{ 备注:sql文件写入数据库:source ~/db_zhanye_sm.sql 其中"~/"是路径 db_zhanye_sm.sql是sql文件名,需要借助软件(例如:FlashFXP)把sql文件上传到服务器,才能写入,这里不详述;采取新建数据库操作测试 }
查看数据库: show databases;
选定数据库: use db_zhanye_sm;
添加一张表并插入数据:
CREATE TABLE `departments` ( `dept_id` int(11) NOT NULL, `dept_name` varchar(30) DEFAULT NULL, PRIMARY KEY (`dept_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `departments` VALUES ('1', '生产部'); INSERT INTO `departments` VALUES ('2', '质量管理部'); INSERT INTO `departments` VALUES ('3', '技术部'); INSERT INTO `departments` VALUES ('4', '综合管理部');
从机数据库创建,查看同步:
在从机上登录MySQL
mysql -u root -p 打开数据库,接下来输入数据库密码
root 输入密码后进入数据库
查看数据库: show databases;
创建数据库并设置编码UTF8: CREATE DATABASE `db_zhanye_sm` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
选定数据库: use db_zhanye_sm;
查看所有表:(查看到表即是成功) show tables;
查看departments表的数据,主机添加数据即可重新查即可看到新数据:
select * from departments;
附:云服务器安全规则配置详情
腾讯云:
1、设置主数据库外网访问权限。
a、设置3306端口外部访问权限。(修改/etc/mysql/mysql/mysql.conf.d/文件夹中的mysqld.cnf文件,
将bind_address的值由'127.0.0.1'改成你腾讯云内网IP地址)
b、重启mysql服务器,然后输入netstat -anpt|grep 3306检查3306端口是否显示腾讯云的内网IP
2、阿里云
修改主机/etc/mysql/mysql.cnf.d/mysqld.cnf文件,将bind_address注释掉
添加安全组规则:
入方向:
协议类型选择My SQL
授权类型改为地址段访问
授权对象输入:0.0.0.0/0
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:MySql 多表查询
下一篇:mysql哈希索引
- MySQL replace函数怎么替换字符串语句 2020-03-09
- PHP访问MySQL查询超时怎么办 2020-03-09
- mysql登录时闪退 2020-02-27
- MySQL出现1067错误号 2020-02-27
- mysql7.x如何单独安装mysql 2020-02-27
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash