配置时环境:腾讯云服务器,云服务器上的MySQL5.7,未配置过主从,如环境不一致,请谨慎操做。个人Master主机(如下称主机)公网IP是119.29.234.4三、内网ip是10.104.190.222,Slave从机(如下称从机)的IP不用关心(主机设权限为全部IP均可以访问,使用”%“实现),请修改成你本身的并在下面代码包含公网IP的地方进行相应的修改。(蓝色字体是全部操做主机的命令步骤,绿色字体是操做从机的命令步骤,底部是供老鸟使用命令集合)mysql
腾讯云服务器如图所示:sql
具体步骤:数据库
1.登陆云服务器(如主机,从机未安装jdk和MySQL请操做2 3 ,否请跳过),下面是控制台用户命令操做vim
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;
附:云服务器安全规则配置详情
腾讯云:
一、设置主数据库外网访问权限。
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
二、阿里云修改主机/etc/mysql/mysql.cnf.d/mysqld.cnf文件,将bind_address注释掉添加安全组规则:入方向:协议类型选择My SQL受权类型改成地址段访问受权对象输入:0.0.0.0/0