Cómo sincronizar la base de datos SQL local con la base de datos SQL remota

Hay tres formas principales de sincronizar datos MySQL:

1. Usar la función de sincronización de base de datos propia de MySQL

2. la base de datos tiene un directorio fijo y se almacena en forma de archivos), realice la sincronización del directorio de la base de datos para lograr propósitos de sincronización de datos

3. Utilice el software de sincronización de bases de datos MySQL exclusivo

1. Función de sincronización de bases de datos:

MySQL proporciona la función de replicación de bases de datos desde la versión 3.23.15 en adelante. Esta función se puede utilizar para realizar la sincronización de dos bases de datos, modo maestro-esclavo y modo de copia de seguridad mutua.

Las configuraciones de la función de sincronización y replicación de la base de datos se reflejan en el archivo de configuración de mysql. El archivo de configuración de mysql (generalmente my.cnf) está en /etc/mysql/my.cnf en un entorno Unix o my.cnf en el directorio de inicio del usuario de mysql.

En el entorno de Windows, si hay un archivo my.cnf en el directorio raíz c:, se tomará este archivo de configuración. Al ejecutar la herramienta winmysqladmin.exe de MySQL, la herramienta nombrará my.cnf en el directorio raíz c: como mycnf.bak. Y cree my.ini en el directorio winnt. El archivo de configuración se leerá cuando se inicie el servidor mysql. Por lo tanto, puede copiar el contenido de my.cnf al archivo my.ini y utilizar el archivo my.ini como archivo de configuración del servidor mysql.

Método de configuración:

Configurar el entorno de muestra:

Sistema operativo: window2000professional

mysql: 4.0.4-beta-max -nt -log

Aip:10.10.10.22

Bip:10.10.10.53

A: Configuración

1. es la cuenta de usuario más sincronizada:

GRANTFILEON*.*TObackup@'10.10.10.53'IDENTIFIEDBY'1234'

2. Agregue una base de datos como base de datos de sincronización:

createdatabasebackup

B: Configuración

1. Agregue una cuenta de usuario con la cuenta de usuario más sincronizada:

GRANTFILEON*.*TObackup@'10.10. 10.22'IDENTIFIEDBY'1234'

2. Agregar una base de datos como base de datos de sincronización:

createddatabasebackup

Modo maestro-esclavo: A->B

A es maestro

Modificar el archivo my.ini de Amysql. Agregue la siguiente configuración al elemento de configuración de mysqld:

server-id=1

log-bin

#Si necesita registrar registros, puede configurar log-bin=c: mysqlbakmysqllog establece el directorio del archivo de registro,

#donde mysqllog es el nombre del archivo de registro, mysql creará varios archivos de registro con diferentes extensiones y el nombre del archivo es mysqllog.

binlog-do-db=backup#Especifique la base de datos que requiere registros

Reinicie el servicio de base de datos.

Utilice el comando showmasterstatus para comprobar el estado del registro.

B es esclavo

Modifica el archivo my.ini de Bmysql.

Agregue la siguiente configuración al elemento de configuración de mysqld:

server-id=2

master-host=10.10.10.22

master-user=backup#Synchronize Cuenta de usuarios

master-password=1234

master-port=3306

master-connect-retry=60 El intervalo de reintento predeterminado es de 60 segundos

replicate-do-db=backup le dice al esclavo que solo actualice la base de datos de respaldo

Reinicie la base de datos

Utilice showslavestatus para verificar la configuración de sincronización.

Nota: dado que la información de configuración del esclavo está configurada, mysql genera master.info en el directorio de la base de datos.

Entonces, si desea modificar la configuración del esclavo relacionado, primero debe eliminar este archivo. . De lo contrario, la configuración modificada no tendrá efecto.

Modo de copia de seguridad mutua de doble máquina.

Si agrega configuraciones esclavas a A y configuraciones maestras a B, puede sincronizar B->A.

Agregue las siguientes configuraciones al elemento de configuración de mysqld en el archivo de configuración de A:

master-host=10.10.10.53

master-user=backup

master-password=1234

replicate-do-db=backup

master-connect-retry=10

En el archivo de configuración de B mysqld Agregar los siguientes ajustes al elemento de configuración:

log-bin=c:mysqllogmysqllog

binlog-do-db=backup

Nota: Cuando ocurre un error* .archivo de registro de errores. El hilo sincronizado sale cuando se corrige el error, se permite que funcione el mecanismo de sincronización Ejecute Slavestart

y reinicie la máquina AB para lograr una copia de seguridad en caliente bidireccional.

Prueba:

Inserte por lotes elementos de la tabla de datos AA (1872000) en B

La base de datos A puede actualizar 2500 datos por segundo.

2. Sincronización del directorio de la base de datos:

El método es el mismo que la sincronización de archivos, solo configure los dos directorios de la base de datos que deben sincronizarse.

¡Las desventajas! son obvios. La sincronización de datos solo se puede realizar en una dirección y se puede utilizar como solución de respaldo

3. Utilice el software de sincronización MySQL dedicado para la sincronización:

El software en esta área incluye. SQLBalance y MyReplicator tienen la ventaja de ser convenientes e intuitivos, y hay muchas funciones competitivas.

La desventaja es la misma que 2: ¡solo puede sincronizar elementos individuales! > Por supuesto, también puede modificar el programa del sitio web espejo para enviar datos a la base de datos principal y leerlos. Sin embargo, los datos en el espejo actual son problemáticos de modificar. ¡También es muy difícil de modificar para los usuarios comunes! Jaja, ¡entiéndelo! ¡Dales a todos una idea! Los amigos que sean capaces pueden probarlo

4. Acerca de la sincronización de datos del foro MySQL

Debido a la fuente de datos incontrolable (difícil). para expresar), los datos del foro son en tiempo real y también se deben considerar los datos del foro espejo. Cómo realizar los datos del foro espejo y el foro principal. ¿Qué pasa con la sincronización? se puede lograr utilizando el modo de copia de seguridad mutua de la propia función de sincronización de bases de datos de MySQL introducida en 1.

Sin embargo, no he probado la aplicación específica. ¡No sé sobre la estabilidad!

Los amigos competentes recomiendan utilizar la siguiente idea para sincronizar, que es relativamente menos eficiente, pero puede reducir los errores.

Por ejemplo, sincronización de datos del foro espejo:

1. del foro principal y del foro espejo están escritos en la base de datos del foro principal, en modo maestro-esclavo, y la lectura solo se realiza localmente. ¡Esto requiere modificar el programa cada vez! Al escribir datos, se envían a dos bases de datos al mismo tiempo. Es seguro, pero la eficiencia es muy pobre y hay que modificar el programa

MSSQL

datos MSSQL. la sincronización utiliza tecnología de replicación de bases de datos para lograr la sincronización de datos (de Internet, también un tutorial muy perfecto)

El concepto de replicación:

La replicación es una tecnología que copia un conjunto de. datos de una fuente de datos a múltiples fuentes de datos. Una forma eficiente de publicar un dato en múltiples sitios de almacenamiento. Al utilizar la tecnología de replicación, los usuarios pueden publicar una copia de los datos en varios servidores, de modo que diferentes usuarios del servidor puedan compartir los datos dentro de los permisos de los permisos. La tecnología de replicación puede garantizar que los datos distribuidos en diferentes ubicaciones se actualicen automáticamente y simultáneamente para garantizar la coherencia de los datos.

Los elementos básicos de la replicación SQL incluyen

Servidor de publicación, servidor de suscriptor, servidor de distribución, publicación, artículo

Cómo funciona la replicación SQL

SQLSERVER utiliza principalmente publicaciones y suscripciones para manejar la replicación. El servidor donde residen los datos de origen es el servidor de publicación, que es responsable de publicar los datos. El servidor de publicación copia una copia de todos los cambios en los datos que se publicarán en el servidor de distribución. El servidor de distribución contiene una base de datos de distribución que puede recibir todos los cambios en los datos, guardarlos y luego distribuirlos al servidor del suscriptor. /p>

Tipos de tecnología de replicación de SQLSERVER

SQLSERVER proporciona tres tecnologías de replicación, que son:

1. Replicación instantánea (la usaremos más adelante)

2. Replicación transaccional

3. Replicación fusionada

Siempre que comprenda los conceptos anteriores, tendrá una cierta comprensión de la replicación. A continuación implementaremos los pasos de replicación paso a paso.

Primero, configure el servidor de publicación

(1) Seleccione el nodo [Servidor] especificado

(2) Seleccione [Copiar] en el menú desplegable [Herramientas]. -menú abajo Seleccione el comando [Publicación, Suscriptor y Distribución] en el submenú

(3) El sistema muestra un cuadro de diálogo, haga clic en [Siguiente] y siga las instrucciones hasta completar.

(4) Después de completar la configuración del servidor de publicación, el sistema agregará un monitor de replicación a la estructura de árbol del servidor.

Al mismo tiempo, también se genera una base de datos de distribución (distribución).

Segunda creación de publicación

(1) Seleccione el servidor especificado

(2) Desde el menú [Herramientas] Seleccione el comando [Crear y administrar publicaciones] en el submenú [Copiar]. En este momento, el sistema mostrará un cuadro de diálogo

(3) Seleccione la base de datos donde desea crear una publicación y luego haga clic en [Crear publicación]

(4) En el [Asistente para crear publicaciones], haga clic en [Siguiente] en el cuadro de diálogo emergente y el sistema abrirá un cuadro de diálogo. El contenido del cuadro de diálogo se copia de los tres tipos. Ahora elegimos el primero, que es la publicación de instantáneas predeterminada (puede consultar la ayuda para los otros dos)

(5) Haga clic en [Siguiente] y el sistema requerirá que se especifique el tipo de servidor de base de datos que puede suscríbete a la publicación, SQLSERVER permite la replicación de datos entre diferentes bases de datos como ORACLE o ACCESS. Pero aquí elegimos el servidor de base de datos que ejecuta "SQLSERVER2000"

(6) Haga clic en [Siguiente] y el sistema abrirá un cuadro de diálogo para definir el artículo, es decir, seleccionar la tabla a publicar

(7) Luego [Siguiente] hasta que se complete la operación. Cuando se completa la creación de la publicación, la base de datos en la que se creó la publicación se convierte en una base de datos compartida.

Suscripción de tercer diseño

(1) Seleccione el servidor del suscriptor especificado

(2) Seleccione el submenú [Copiar] del menú desplegable [Herramientas] [Solicitar suscripción]

(3) Haga clic en [Siguiente] hasta que el sistema le solicite que verifique el estado de ejecución del servicio proxy SQLSERVER. El requisito previo para realizar la operación de copia es que el servicio proxy SQLSERVER debe haber sido. comenzó.

(4) Haga clic en [Finalizar]. Complete la operación de suscripción.

Completar los pasos anteriores en realidad significa que la copia se realizó correctamente. Pero, ¿cómo saber si la copia fue exitosa? Aquí puede utilizar este método para ver rápidamente si tiene éxito. Expanda Copiar en el servidor de publicación-Publicar contenido-haga clic con el botón derecho para publicar contenido-Propiedades-haga clic en Activar-Estado y luego haga clic en Ejecutar el agente inmediatamente, luego haga clic en Propiedades del agente, haga clic en Activar programación y configure la programación para que se realice todos los días, cada minuto. , entre las 0:00:00 y las 23:59:59. El siguiente paso es determinar si la copia se realizó correctamente. Abra C:/ProgramFiles/MicrosoftSQLServer/MSSQL/REPLDATA/unc/XIAOWANGZI_database_database y vea si hay algunas carpetas con la hora como nombre de archivo. Se generará una cada minuto.

Si aún no lo cree, abra su base de datos y vea si ve la tabla que acaba de publicar en la base de datos de suscripción especificada del servidor suscrito:

Una solución de sincronización manual

--Sincronizar periódicamente los datos en el servidor

--Ejemplo:

--Entorno de prueba, SQLServer2000, nombre del servidor remoto: xz, nombre de usuario: sa, sin contraseña, base de datos de prueba: prueba

--Tabla en el servidor (el analizador de consultas está conectado al servidor para crear)

createtable[user](idintprimarykey,numbervarchar(4),namevarchar(10))

--Lo siguiente está en la red de área local (operación local)

--Tabla local, descripción del estado: nulo significa registro nuevo, 1 significa registro modificado, 0 significa ninguno Registros modificados

ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[user]')andOBJECTPROPERTY(id,N'IsUserTable')=1)

droptable[user]

GO

createtable[usuario] 

(idintidentity(1,1),numbervarchar(4),namevarchar(10),statebit)

go

--Crea un disparador y mantiene el valor del campo de estado

createtriggert_stateon[user]

afterupdate

as

actualizar[usuario]setstate=1

desde[usuario]ajoininsertedbona.id=b.id

wherea.stateisnotnull

ir

--Para facilitar la sincronización, cree un servidor vinculado al servidor que desea sincronizar

--El nombre del servidor remoto aquí es: xz, nombre de usuario: sa, sin contraseña

ifexists(select1frommaster..sysserverswheresrvname='srv_lnk')

execsp_dropserver'srv_lnk','droplogins'

go

execsp_addlinkedserver'srv_lnk' , '','SQLOLEDB','xz'

execsp_addlinkedsrvlogin'srv_lnk','false',null,'sa'

go

--Crear sincronización Procedimientos almacenados procesados

ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo]. 

[p_synchro]')andOBJECTPROPERTY(id,N'IsProcedure')=1 )

dropprocedure[dbo].[p_synchro]

GO

createprocp_synchro

as

--setXACT_ABORTon

--Inicia el servicio MSDTC del servidor remoto

execmaster..xp_cmdshell'isql/S"xz"/U"sa"/P""/q"execmaster.. xp_cmdshell' 'netstartmsdtc'',no_

output"',no_output

--Iniciar el servicio MSDTC local

--execmaster..xp_cmdshell'netstartmsdtc',no_output

--Realizar transacciones distribuidas Procesamiento , si la tabla usa la columna de identidad como clave principal, use el siguiente método

--BEGINDISTRIBUTEDTRANSACTION

--Sincronizar datos eliminados

deletefromsrv_lnk.test. dbo.[usuario]

whereidnotin(selectidfrom[usuario])

--Sincronizar datos recién agregados

insertintosrv_lnk.test.dbo.[usuario]

selectid,number,namefrom[user]wherestateisnull

--Sincronizar datos modificados

updatesrv_lnk.test.dbo.[user]set

número=b.número,nombre=b.nombre

fromsrv_lnk.test.dbo.[usuario]a

unirse[usuario]bona.id=b.id

whereb.state=1

--Actualiza el indicador local después de la sincronización

update[user]setstate=0whereisnull(state,1)=1

--COMMITTRAN

go

--Crea trabajos y ejecuta periódicamente procedimientos almacenados para la sincronización de datos

ifexists(SELECT1frommsdb..sysjobswherename='procesamiento de datos' )

EXECUTEmsdb.dbo.sp_delete_job@job_name='Procesamiento de datos'

execmsdb..sp_add_job@job_name='Procesamiento de datos'

--Crear paso de trabajo

declare@sqlvarchar(800),@dbnamevarchar(250)

select@sql='execp_synchro'--comando de procesamiento de datos

@dbname=db_name () --El nombre de la base de datos para ejecutar el procesamiento de datos

execmsdb..sp_add_jobstep@job_name='procesamiento de datos',

@step_name='sincronización de datos',

@subsystem='TSQL',

@database_name=@dbname,

@command=@sql,

@retry_attempts=5,--Veces de reintento

@retry_interval=5--Intervalo de reintento

--Crear programación

EXECmsdb..sp_add_jobschedule@job_name='Procesamiento de datos',

@name='Programar',

@freq_type=4,--todos los días

@freq_interval=1,--ejecutar una vez al día

@ active_start_time=00000--ejecución a las 0 en punto