如何迁移腾讯云服务器自建数据库到云数据库

如何迁移腾讯云服务器自建数据库到云数据库,第1张

第一,根据自建数据数据量、MySQL版本以及访问量等信息申请对应的云数据库实例,申请云数据库实例完成后,联系云数据库的腾讯云技术人员调整云数据库和云服务器之间的网络配置。

第二,迁移数据库:

1、使用mysqldump导出自建数据库的数据,注意记录binlog的文件和位置(如需帮助请咨询云数据库技术人员),然后使用mysql命令导入至对应的云数据库实例中。推荐使用云数据库多线程导入导出工具。

2、在自建数据库上给云数据库的同步用户授权,授权语句范例如下:

GRANT REPLICATION SLAVE,FILE ON *.* TO 'replication'@'%' IDENTIFIED BY 'test123'

3、在导入数据后根据备份的binlog位置和binlog文件使用change master命令配置从自建数据库到云数据库的主从同步。范例如下:

CHANGE MASTER TO MASTER_HOST='10.1.1.10',MASTER_USER='replication',MASTER_PASSWORD='test123',MASTER_LOG_FILE='mysql-bin.000012', MASTER_LOG_POS=106

第三,迁移后数据校验:数据同步完成之后,可以使用数据抽样、对比表数量、库数量或者使用专业的对比工具确认数据是否完整。

第四,业务切换数据库:校验数据完整后,请选择适当时间来做业务的平滑切换,将业务连接的数据库切换至云数据库,切换后请务必检查自建数据库是否还有请求进来,避免出现还有请求连接到自建数据库的情况。

第五,断开自建数据库和云数据库主从同步:

1、切换后业务正常后,业务侧在云数据库上执行如下命令断开自建数据库到云数据库的主从同步。

2、断开主从同步后通知云数据库的技术人员恢复之前调整的网络。

linux下,mysql安装后,数据库的数据默认存放在/var/lib/mysql目录下,如果该目录下挂载的磁盘空间很少,不够用。需要迁移到其他的目录位置。

方法一:

参照windows下的方法,把/var/lib/mysql移到需要的目录,再修改/etc/my.cnf文件,指定数据目录。这方面的教程网上很多,大家可以去搜索一下。

方法二:

使用linux下的软连接方法,具体 *** 作如下:(以迁移到/home/mysql/目录为例)

先停止mysql:

/etc/init.d/mysqld stop

移动数据:

mv /var/lib/mysql/* /home/mysql/

创建软连接:

ln -s /home/mysql/ /var/lib/mysql/

启动mysql:

/etc/init.d/mysqld start

即可。

首先是登陆腾讯云,登陆之后可以领取新手礼包,如图

进入云产品->数据库->CDB for MYSQL->立即选购,选购最低配的可用礼包抵扣使用一个月,购买完成

主页->右上角产品管理->使用中的数据库,这时我们会看见一个实例,首先我们进入管理页面对实例进行一些基本的设置

实例名可以随意更改,外网地址必须开启,否则我们就不能在自己的项目中和本地访问云数据库。进入账号管理页面修改自己的root密码,然后点击右上角的登录数据库

登陆完成之后如下图

这个和本地客户端 *** 作基本相同,我就不详细阐述了

   二、使用一个demo来说明如何 *** 作云mysql数据库

1.在实例上上新建一个为nodejs的数据库,然后新建一个为employee的表,新建四个字段 name  sex   age   email除了年龄为int其它的全部为varchar格式

2.新建一个TimLiu的文件夹,打开cmd,cd TimLiu, 初始化项目npm init ,按照它的提示一步一步的 *** 作即可,安装mysql模块,npm insitall mysql, 这个模块的作用主要是连接mysql数据库。

3.新建一个model.js 文件,

   var mysql = require(‘mysql’)

   var connection = mysql.createConnection({

           host:'',

           user:'root',

           password:'123abc',

           database:' nodejs',

           port:6445

          })

connection.connect()

这里的host为我们在腾讯云上开通的外地址,端口号也是在外网地址里面,注意要把外网地址写分开,用户为默认的管理员用户,密码为我们在云平台上设置的密码,数据库为我们创建的nodejs数据库。

接下来我们对数据库进行增删改查 *** 作

/**

* 增加员工

*/function addEmployee(){

   var employeeInsertSql = 'INSERT INTO employee(name,sex,age,email) VALUES(?,?,?,?)'

   var employeeInsertSql_Params = ['Tim','男',22,'18818216454@163.com']

   connection.query(employeeInsertSql,employeeInsertSql_Params,function(err,result){

       if(err) console.log('[INSERT ERR]-',err.message)

       console.log(result)

   }) }addEmployee()

 }

/**

* 更新员工

*/

function insertEmployee(){

   var employeeUpdateSql = "UPDATE employee SET name = ? WHERE age =?"

   var employeeUpdateSql_Params = ['Peter',22]

   connection.query(employeeUpdateSql,employeeUpdateSql_Params,function(err,result){

       if(err) console.log('[UPDATE ERR]-',err.message)

       console.log(result)

   })}

insertEmployee()

/**

*查询员工

*/  function getEmployee(){

   var employeeGetSql = "SELECT * FROM employee"

   connection.query(employeeGetSql,function(err,result){

       if(err) console.log('[SELECT ERR]-',err.message)

       console.log(result)

   })}

getEmployee()

/**

*删除员工

*/  function deleteEmployee(){

   var employeeDeleteSql = "DELETE employee WHERE name = ?"

   var employeeDeleteSql_Params = 'Peter'

   connection.query(employeeDeleteSql,employeeDeleteSql_Params,function(err,result){

       if(err) console.log('[DELETE ERR]-',err.message)

       console.log(result)

   })

   }deleteEmployee()

这样我们就可以愉快的 *** 作数据库了

如果大家想把项目更模块化 *** 作,可在model下面新建一个employee_two.js,代码如下

var mysql = require('mysql')var connection = mysql.createConnection({

   host:'',

   user:'root',

   password:'',

   database:'nodejs',

   port:})connection.connect()/**

* 增加员工

* @param {String} employee

* @param {Function} callback

*/exports.addEmployee=function(employee,callback){

   var employeeInsertSql = 'INSERT INTO employee(name,sex,age,email) VALUES(?,?,?,?)'

   var employeeInsertSql_Params = [employee.name,employee.sex,employee.age,employee.email]

   connection.query(employeeInsertSql,employeeInsertSql_Params,callback)}/**

* 更新员工

* @param {String} employee

* @param {Function} callback

*/exports.updateEmployee = function(name,age){

   var employeeUpdateSql = "UPDATE employee SET name = ? WHERE age =?"

   var employeeUpdateSql_Params = ['Peter',22]

   connection.query(employeeUpdateSql,employeeUpdateSql_Params,function(err,result){

       if(err) console.log('[UPDATE ERR]-',err.message)

       console.log(result)

   })}/**

* 查询员工

*

*/exports.getEmployee = function(){

   var employeeGetSql = "SELECT * FROM employee"

   connection.query(employeeGetSql,callback)}/**

* 删除员工

* @param {String} name

*/exports.deleteEmployee = function(name){

   var employeeDeleteSql = "DELETE employee WHERE name = ?"

   var employeeDeleteSql_Params = 'Peter'

   connection.query(employeeDeleteSql,employeeDeleteSql_Params,callback)

   }再在根目录下新建index.js,代码如下var db = require('./model/employee_two')//增加员工var employee = {

   name:'lisa',

   age:22,

   sex:"女",

   email:'99533212@qq.com'}db.addEmployee(employee,function(err,result){

   if(err) console.log("[INSERT err]-",err.message)

   console.log(result)})//删除员工db.deleteEmployee('Peter',function(err,result){

   if(err) console.log("[DELETE err]-",err.message)

   console.log(result)})//更新员工db.updateEmployee('Tim',23,function(err,result){

   if(err) console.log("[UPDATE err]-",err.message)

   console.log(result)})//查询员工db.getEmployee(function(err,result){

   if(err) console.log("[GET err]-",err.message)

   console.log(result)})


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9440005.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存