Cómo exportar selectivamente datos de mysql para un repository github

Somos un proyecto de código abierto y nos gustaría editar queueborativamente nuestro website a través del repository público de github.

¿Alguna idea sobre la mejor solución para exportar los datos de mysql a github, ya que mysql puede contener información confidencial y cómo podemos versionar los cambios que ocurren en ella?

Parece que dbdeploy es lo que estás buscando

La respuesta es que no tienes datos en el repository. Es posible que desee mantener su ddl, y tal vez algunos datos de configuration. Pero eso es todo. Si desea controlar la versión de sus datos, existen otras opciones. GIT no es uno de ellos

Utilice un motor de blog "back-end-by git", olvídese de mysql, comprométase en github.com, empuje y tire, ¡domine!

Aquí está una list de los mejores:

  1. http://jekyllrb.com/
  2. http://nestacms.com/
  3. http://cloudhead.io/toto
  4. https://github.com/colszowka/serious

y por si acaso, … una wiki simple, Git-powenetworking con una dulce API y frontend local. :

Suponiendo que tiene una pequeña cantidad de datos que desea tratar de esta manera, puede usar mysqldump para volcar las tablas que desea mantener sincronizadas, verifique que se vuelque en git e introdúzcalo nuevamente en su database al momento de pagar.

Escriba un script de shell que haga el equivalente de:

 mysqldump [options] database table1 table2 ... tableN > important_data.sql 

para crear o actualizar el file. Verifique ese file en git y cuando sus datos cambien de manera significativa, puede hacerlo:

 mysql [options] database < important_data.sql 

Idealmente, el último sería en un gancho de git post-receive , por lo que nunca olvidaría aplicar sus cambios.

Así que así es como podrías hacerlo. No estoy seguro de que quieras hacerlo. Parece bastante frágil, esp. si el Miembro del Equipo 1 realiza algunos cambios laboriosos en las tables de interés, mientras que el Miembro del Equipo 2 está haciendo lo mismo. Uno de ellos va a registrar primero sus cambios, y en el mejor de los casos tendrá problemas de fusión desagradables. El peor caso es que uno de ellos pierde todos sus cambios.

Puede mitigar esos problemas haciendo siempre los cambios en el file important_data.sql , pero la facilidad o dificultad de eso depende de su aplicación. Si haces esto, querrás jugar con las opciones de mysqldump para que obtengas un buen file legible y git- .

Puede exportar cada tabla como un file SQL separado. Solo cuando se cambia una tabla, se puede volver a presionar.

Si estuvieras hablando de configuration, entonces recomendaría vertederos sql o similares para sembrar la database según la respuesta de Ray Baxters.

Como mencionó a Drupal, supongo que los datos se refieren a usuarios / contenido. Como tal, realmente debería estar buscando tener una única database a la que cada desarrollador se conecta de forma remota, es decir, una sola versión. Esto se debe a que las modificaciones simultáneas en las tablas de mysql serán extremadamente difíciles de reconciliar (por ejemplo, dos usuarios nuevos con user.id = 10 cada uno haciendo una nueva publicación con post.id = 1, post.user_id = 10, etc.).

Puede tener sentido, por supuesto, hacer una copy de security de esto con un volcado sql (potencialmente mantenido en el control de la versión) en caso de que uno de tus desarrolladores elimine accidentalmente algo crítico.

Si solo quieres un volcado parcial, PHPMyAdmin lo hará. Ejecute su instrucción SELECT y cuando se muestre habrá un enlace de export en la parte inferior de la página (el de la parte superior contiene toda la tabla).

Puede versionar files mysqldump que son simplemente scripts sql como se indica en las respuestas anteriores. Según sus comentarios, parece que su principal interés es permitir que los desarrolladores tengan una base para un entorno local.

Aquí hay un ERD excelente para Drupal 6. No sé qué versión de Drupal está usando o si ha habido cambios en estas tablas centrales entre v6 y v7, pero puede verificar que use un volcado, o phpMyAdmin o cualquier otro herramienta que tiene disponible para usted que le permite inspeccionar la estructura de la database. Drupal ERD

Según el ERD, los datos que serían problemáticos para una installation de Drupal se encuentran en los usuarios, user_roles y authmap tables. Hay una manera rápida de omitirlos, aunque es importante tener en count que el contenido que se agrega tendrá relaciones con los usuarios que lo agregaron, y Drupal puede tener problemas si no hay filas en la tabla de usuarios que correspondan a qué ha sido añadido.

Entonces, para ejecutar el mysqldump, simplemente excluiría las tablas de problemas, o al less la tabla de usuarios.

 mysqldump -u drupaldbuser --password=drupaluserpw 0-ignore-table=drupaldb.user drupaldb > drupaldb.sql 

Debería crear una tabla de usuario simulada con un grupo de usuarios de testing con combinaciones conocidas de nombre / contraseña que solo necesitaría volcar y versión una vez, pero lo ideal es que desee que coincidan o excedan la cantidad de usuarios reales de drupal que Tendré que agregará contenido. Esto es solo para hacer que las relaciones de permissions coincidan.