欢迎光临
我们一直在努力

云服务器MySQL主从配置完全解读

配置时环境:腾讯云服务器,云服务器上的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

赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:云服务器MySQL主从配置完全解读
文章链接:https://www.jmwz.net/5508.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址